0

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

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

1- 创建一个名为 Overview 的新 Objective-C 类和 UIViewController 子类,然后检查 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

怎样才能达到我想要的?

先感谢您!

4

3 回答 3

1

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

Overview *overview = [[Overview alloc] initWithNibName:@"Overview" bundle:nil];
[self pushViewController:overview animated:YES];
于 2012-10-29T14:56:25.373 回答
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)#>];

这将呈现新的视图控制器,然后返回使用:

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

对于很多视图,我发现故事板是最好的,在创建新项目时勾选使用故事板框,然后您可以轻松查看所有视图并通过按钮推送创建模态转换以及不使用 CTRL+单击并从按钮上拖动view1并在任意位置取消拖动view2并单击模式,这将让您过渡。

于 2012-10-29T14:49:04.073 回答
0

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

Overview *overviewController = [[Overview alloc] initWithNibName:@"Overview" bundle:nil];
于 2012-10-29T14:49:43.470 回答