iPhone结构视图控制器

iPhone结构视图控制器,iphone,xcode,view,controller,structure,Iphone,Xcode,View,Controller,Structure,我正在设计一个带有主页的iPhone应用程序。此页面有多个按钮(6),用于指向不同的内容 2个按钮是一个简单的视图,只包含一些信息并返回主屏幕。“下一步”按钮打开一封电子邮件,我相信这只是一个视图,因此与其他两个视图没有太大区别 这就是问题变得复杂的地方。一个按钮将拍摄照片,另一个按钮将从库中选择一个。一旦完成,它将编辑它并创建一个我将创建的对象。该对象将存储在一个数组中,该数组将由主页上的最后一个按钮打开,UITableViewController将控制该数组 我的第一个问题是我应该使用基于导

我正在设计一个带有主页的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中,它控制主窗口的视图。我知道它在那里工作,因为当它第一次运行switch类时,它会将它引导到主屏幕。我知道正在调用该方法,因为控制台正在显示NSLog内容,但它不会切换。

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

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

编辑:

你试过了吗

[self.view addSubview:instructions.view]; 

您的第一个问题是,您应该使用基于导航的控制器。。。因此,当您按下任何按钮时,将打开另一个带有动画的视图控制器。。此外,基于导航的控制器还可以跟踪父控制器(如果您有任何已创建的对象),这些对象将保留在作为导航根的父视图控制器中

以下是您应该使用的步骤

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

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

3-您可以检查此链接以获取相册,如果您已将源类型更改为相机,则可以获取图像。。。

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

5-sice每次要查看包含照片的阵列时,都将使用保存照片的阵列初始化uitableviewcontroller的数据源


谢谢

我认为问题来自两个地方之一:

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

指令*i=[[Instructions alloc]init]

这是不够的。你需要使用

 Instructions *i = [[Instructions alloc] initWithNibNamed:@"Instructions"];
以包含已在interface builder中构建的视图


我看到的另一件可能出错的事情是,在同一个索引中插入所有视图。把索引想象成photoshop中的一个图层。如果希望新视图在上一个视图的上方可见,则需要更高的索引。如果您使用
addSubview:
而不是
insertSubview:atIndex:

则会自动处理此问题,我首先尝试了自己的方法,唯一的问题是此代码-(void)displayView:(int)intNewView{NSLog(@“%i”,intNewView);[home.view removeFromSuperview];指令*i=[[Instructions alloc]init];instructions=i;[self.view insertSubview:instructions.view atIndex:0];}它位于我的SwitchClass中,它控制主窗口的视图。我知道它在那里工作,因为当它第一次运行switch类时,它会将它引导到主屏幕。我知道正在调用该方法,因为控制台正在显示NSLog。如果您在代码中利用了ARC,那么就不需要发布任何东西(实际上,您不能)。