iOS应用程序有很多不同的视图

时间:2012-10-29 14:39:58

标签: ios ios5 view

我正在开发一个iOS应用程序,我希望它有超过10个视图。在Android中,您必须创建一个布局,然后创建它的类。我一直在尝试在XCode中实现这一点,但我不知道该怎么做......

我们的想法是拥有一个视图类,以便每个类都管理自己的视图。到目前为止我所做的是:

1-创建一个名为Overview和子类UIViewController的新Objective-C类,然后检查Witch XIB的用户界面。

2-显示我使用的视图:[[NSBundle mainBundle] loadNibNamed:@"Overview" owner:self options:nil];

3-在viewDidLoad中我用这个:self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"overview_portrait.jpg"]];来改变背景图像

我可以看到视图,但背景不会改变,当我添加按钮并点击它们时会抛出错误:-[ViewController push:]: unrecognized selector sent to instance 0x7427220

如何实现我的目标?

提前谢谢!

3 个答案:

答案 0 :(得分:1)

您正在显示视图,但您没有加载其控制器,这就是控制器方法未被调用的原因。您必须创建控制器类的实例并从当前控制器中推送它。像这样:

Overview *overview = [[Overview alloc] initWithNibName:@"Overview" bundle:nil];
[self pushViewController:overview animated:YES];

答案 1 :(得分:0)

推送ViewControllers用于导航控制器,因此如果您正在查看界面构建器,如果您的屏幕视图(我不确定您使用的故事板或XIB)是否可以更改的视图附加到标有“导航控制器”的灰色框然后你可以使用:

        [self.navigationController pushViewController:myNewViewInstance animated:YES];

使用背景图片,您最好使用:

UIImageView *myBackground = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.width)];
            [self.view addSubview:myBackground];
            [self.view sendSubviewToBack:myBackground];

如果您不使用导航控制器,可以使用:

        [self presentModalViewController:<#(UIViewController *)#> animated:<#];(BOOL)#>];

这将显示新的viewcontroller,然后返回使用:

[self dismissModalViewControllerAnimated:<#(BOOL)#>]; 

对于很多视图,我发现故事板是最好的,当创建一个新项目时勾选使用故事板框,然后你可以轻松地看到所有视图并通过按钮推动创建模态转换,什么不使用CTRL +点击并拖动view1上的按钮和view2上任意位置的unDrag,然后点击模态,这样您就可以转换。

答案 2 :(得分:0)

我不确定Android的设置,但对于iOS,您希望实例化视图控制器,而不是nib文件。您要做的是创建一个新的概述类并使用nib初始化它。

Overview *overviewController = [[Overview alloc] initWithNibName:@"Overview" bundle:nil];