0

iOS 开发新手。如果我错了,请纠正我?

我有一个 UIWindow,rootviewcontroller 是:

@interface ViewController : UIViewController
{
IBOutlet UIButton *but;
}

@property (nonatomic, strong) UIButton  *but;
-(IBAction) butButtonPressed;

@end

即:如果我将此 Viewcontroller 作为根视图控制器,则会显示 ViewController 中可用的 UIView。明白了。

我创建了一个继承自 UIViewController 的新类,以及它的 .xib 文件。

所以xib文件名是:view1.xib,

我的目标是在按下按钮时显示此视图。

现在我创建了一个按钮,并且按钮按下调用 butButtonPressed。在 butButtonPressed 内部,我做了以下操作。

  myViewController *vcontroler = [[ViewController alloc] initWithNibName:@"view1" bundle:nil];
    [self.view.window addSubview:vcontroler.view];

应用程序崩溃。我究竟做错了什么 ?请指出。

4

1 回答 1

1

这个...

[self.view.window addSubview:vcontroler.view];

...是一个非常糟糕的策略(我真的希望我知道人们在哪里找到它作为一种展示观点的方式)。如果你创建了一个视图控制器,你应该使用它,而不是仅仅把它当作一个临时容器,你可以从中提取视图。

如果您想vcontroler看起来像您的第一个控制器的孩子(并且您有一个UINavigationController),请使用pushViewController:animated:. 否则,您可以使用 将其显示为模态presentModalViewController:animated:

如果您只想将视图添加到现有显示,请将视图放在ViewController的层次结构中并显示/隐藏它。

如果您绝对必须将它作为子控制器,ViewController那么您需要保留对它的引用并在拥有的控制器内管理它的生命周期。

于 2012-08-06T12:35:32.647 回答