Ios 从nib文件加载的UIView,我可以将所有者设置为view本身吗?

Ios 从nib文件加载的UIView,我可以将所有者设置为view本身吗?,ios,xib,nib,Ios,Xib,Nib,初始化最常用的方法是 UIView*rootView=[[NSBundle mainBundle]loadNibNamed:@“MyRootView”所有者:自选项:nil]objectAtIndex:0] 在我的例子中,self是指一个视图控制器,但我必须将所有者设置为视图本身,因为.m和.xib之间有很多出口,如何处理这种情况?您应该在view.m类中使用init方法,如: - (id)initWithNibNamed:(NSString *)nibName{ NSArray *n

初始化最常用的方法是

UIView*rootView=[[NSBundle mainBundle]loadNibNamed:@“MyRootView”所有者:自选项:nil]objectAtIndex:0]


在我的例子中,self是指一个视图控制器,但我必须将所有者设置为视图本身,因为.m和.xib之间有很多出口,如何处理这种情况?

您应该在view.m类中使用init方法,如:

- (id)initWithNibNamed:(NSString *)nibName{
     NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:nibName owner:nil options:nil];
     self = [nibContents lastObject];
     if(self){

        //do your code here
      }
     return self;
 }

并从viewcontroller调用此方法。连接视图到视图xib。

多亏了堆栈溢出,已经有了解决此类问题的完美方案。
关键是在自定义视图的实现中调用loadNibNamed,而不是在创建视图的控制器中调用它。

没有正确地解释您的问题。问题是在上面的loadNibNamed中,我必须将uiview的xib文件所有者设置为视图控制器(因为我在视图控制器中使用此视图),这会导致许多插座连接崩溃(因为插座是在自定义视图类中定义的,而不是在视图控制器类中定义的)。您需要将uiview的xib文件所有者设置为视图类(而不是视图控制器)。在代码中将所有者设置为nil?创建自定义uiview。。在情节提要中将标识符设置为它。并将该类分配给RootViewController视图。并将“MyRootView”作为情节提要标识符设置到您的RootViewController。添加init方法不如为
UIView
创建类别方便。我认为这是一种不同的方法~在链接中的示例代码中,我们不必做任何事情来混合控制器和视图。控制器是控制器,视图是视图。没有视图的所有者是控制器。但还是非常感谢你的大力帮助:)@ashoklondheit没关系,但我也告诉过你。我想也许你在故事板项目中也告诉过我同样的事情:)但我不能得到它,因为我不太使用故事板:)