如何在单个班级中使用3个XIB

时间:2010-10-19 04:48:55

标签: iphone

我有一个类,想要处理3个Xib或nib(我不知道确切的区别)文件我知道可以从3个不同的视图控制器处理3个文件但是可以从单个视图控制器完成?

我在点击按钮时尝试了这个,但没有成功

-(IBAction)goToNext2{
    [self initWithNibName:@"SecondNib" bundle:nil];    
    [self presentModalViewController:self animated:YES];
}

可以使用导航控制器完成吗?

1 个答案:

答案 0 :(得分:2)

不要向同一个对象发送-init ...两次。使用NSBundle的loadNibNamed:owner:options:改为加载其他nib。无论如何,我怀疑你的视图控制器已经设置了视图。你从其他笔尖加载什么?如果需要将另一个视图显示为模态,则应该有另一个视图控制器对象。要求视图控制器将其自身呈现为模态视图控制器没有意义。但它可以呈现另一个视图控制器。

编辑:-presentModalViewController:animated:告诉一个视图控制器以模态方式显示另一个视图控制器 。相反的操作-dismissModalViewControllerAnimated:告诉第一个vc解除它之前提供的模态vc。这种方法需要两个不同的视图控制器对象(但它们可能属于同一个类)。

如果您不需要全新的视图控制器来显示某个视图,您可以使用NSBundle的loadNibNamed:owner:options:加载视图,然后将其作为子视图添加到另一个视图。通常,您在Interface Builder中设置视图,将文件所有者的类设置为视图控制器的类,并连接视图控制器的必要插座。现在,重要的部分。当笔尖加载时,将为笔芯分配从笔尖取消存档的实际对象。如果您的视图控制器有一个“主”笔尖(其视图插座已连接)和一个“辅助”笔尖,您通过发送[[NSBundle mainBundle] loadNibNamed:@“MySubview”所有者:自己加载options:nil],您不能在辅助笔尖中连接相同的视图插座。制作其他插座(仅与辅助笔尖相关)并仅连接它们,否则会发生非常糟糕的事情。

我鼓励您仔细阅读the NSBundle methodNIBs in detail和。{ modal view controllers。它们似乎是无聊的基础知识,但它们对于正确理解和使用非常重要。