【问题标题】:iPhone Structure ViewControlleriPhone 结构 ViewController
【发布时间】:2012-07-01 07:48:04
【问题描述】:

我正在设计一个带有主页的 iPhone 应用程序。此页面有多个按钮 (6),用于不同的事情。

2 个按钮是一个简单的视图,只有一些信息并返回主屏幕。下一个按钮打开一封电子邮件,我相信这只是一个视图,因此与其他两个没有太大不同。

这里是复杂的地方。一个按钮将拍照,另一个按钮将从库中选择一张。完成后,它将对其进行编辑并创建一个我将创建的对象。该对象将存储在一个数组中,该数组将由主页的最后一个按钮打开,UITableViewController 将控制它。

我的第一个问题是我应该使用基于导航的视图控制器还是只使用我可以自己创建的视图控制器?或者我应该使用我什至不知道的东西?

请帮忙!!!如果您能提供帮助,请真诚地感谢您!

编辑:

好吧,我首先尝试了自己的方式,我遇到的唯一问题是这段代码

- (void) displayView:(int)intNewView { 
    NSLog(@"%i", intNewView);
    [home.view removeFromSuperview];
    Instructions *i = [[Instructions alloc]init];
    instructions = i; 
    [self.view insertSubview:instructions.view atIndex:0]; 
}

它在我的 SwitchClass 中,它控制主窗口的视图。我知道它在那里工作,因为当它第一次运行时,开关类将它引导到主屏幕。我知道正在调用该方法,因为控制台正在显示 NSLog 内容,但它不会切换。

【问题讨论】:

    标签: iphone xcode view controller structure


    【解决方案1】:

    除了你有 6 个按钮之外,我会尝试使用 UITabBarController 来完成你想要做的事情;这对我来说似乎更自然(但你应该找到一种方法将你的 6 个按钮减少到 5 个,否则它们不会一次全部显示出来)。

    否则,UINavigationController 对我来说似乎很好。对于每个按钮,您按下一个新控制器来处理该按钮功能,然后您弹回。它应该很容易工作。

    编辑:

    你试过了吗?

    [self.view addSubview:instructions.view]; 
    

    【讨论】:

    • 好吧,我首先尝试了自己的方法,我遇到的唯一问题是这段代码 - (void) displayView:(int)intNewView { NSLog(@"%i", intNewView); [home.view removeFromSuperview];指令 *i = [[指令分配]init];指令=我; [self.view insertSubview:instructions.view atIndex:0];它在我的 SwitchClass 中,它控制主窗口的视图。我知道它在那里工作,因为当它第一次运行时,开关类将它引导到主屏幕。我知道正在调用该方法,因为控制台正在显示 NSLog 事物。它只是不会切换
    • 如果您在代码中利用了 ARC,那么您不需要发布任何内容(实际上,您不能)。
    【解决方案2】:

    您的第一个问题是的,您应该使用基于导航的控制器...所以当您按下任何按钮时,将打开另一个带有动画的视图控制器。如果您有任何创建的对象,基于导航的控制器也会跟踪父控制器保留在作为导航根的父视图控制器中。

    这是您应该使用的步骤。

    1-在主应用程序委托中创建导航控制器,并使其根为视图控制器。

    2-当您按下具有 6 个按钮的视图控制器时。

    3-如果您已将源类型更改为相机,您也可以查看此链接以获取相册,然后您可以获得图像... Photo Libaray

    4- 获得图像后,您可以将其添加到存在于 NavigationViewController 根目录中的 NSMutableArray 中,在您的情况下将是具有 6 个按钮的视图。

    5-sice 每次您想查看包含照片的数组时,您将使用保存照片的数组初始化 uitableviewcontroller 的数据源。

    谢谢

    【讨论】:

      【解决方案3】:

      我认为问题出在以下两个地方之一:

      据我了解,这些都是不同的视图控制器,对吗?他们有自己的xib文件吗?如果这是真的,那么调用:

      指令 *i = [[指令分配]init];

      不足。你需要使用

       Instructions *i = [[Instructions alloc] initWithNibNamed:@"Instructions"];
      

      为了包含您已经在界面构建器中构建的视图。

      我认为可能出错的另一件事是您将所有视图插入到同一索引处。将索引视为 Photoshop 中的一个图层。如果您希望新视图在最后一个视图之上可见,则它需要更高的索引。如果您使用 addSubview: 而不是 insertSubview: atIndex:,则会自动处理此问题

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-14
        • 1970-01-01
        • 2011-03-02
        • 2011-02-26
        • 1970-01-01
        相关资源
        最近更新 更多