objective-c – 加载没有UIViewController的XIB文件
我想使用Interface Builder设计一个UIView和一些子视图(UIWebView,UIToolbar,一些UIBarButtonItems,一个进度指示器等等),但我认为传统上不需要使用UIViewController,presentViewController:动画等
所以,我创建了一个自定义类,其.h文件代码如下: @interface FileInteractionManager : NSObject { } @property (nonatomic,retain) IBOutlet UIView *fileView; @property (nonatomic,retain) IBOutlet UIWebView *fileWebView; @property (nonatomic,retain) IBOutlet UIBarButtonItem *printButton; @property (nonatomic,retain) IBOutlet UIBarButtonItem *optionsButton; @property (nonatomic,retain) IBOutlet UIBarButtonItem *doneButton; 我的.m文件如下: @implementation FileInteractionManager @synthesize fileView,fileWebView,doneButton,optionsButton,printButton; -(id)init { NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"FileInteractionView" owner:self options:nil]; NSLog(@"Load success!"); return self; } 最后,我创建了一个名为’FileInteractionView.xib’的独立xib文件,将文件的所有者更改为我在上面创建的自定义类,并连接IBOutlets. 当我在我的类上调用init方法时,我可以在调试器中看到我的所有IBOutlet对象都被正确实例化了. 我的问题是: > loadNibNamed:owner:options:方法是加载我的独立.xib文件的正确方法吗?我不喜欢这个方法返回一个我没用的数组(返回的顶级对象匹配我的变量fileView,但我已经通过Interface Builder链接它们). 解决方法
我使用一种不同的方法.我创建了UIView(MyCustomView ie)的子类,然后创建了具有视图UI的xib,并将(主)视图类更改为刚定义的视图类.在xib中,您可以将插座链接到自定义视图本身(而不是文件所有者).
最后在类定义中我创建了一个这样的函数: + (id) newFromNib { NSArray *nibArray = [[UINib nibWithNibName:NSStringFromClass([self class]) bundle:nil] instantiateWithOwner:nil options:nil]; return nibArray[0]; } 只是几个笔记: 所以我需要MyCustomView我做的事情: MyCustomView* mycv = [MyCustomView newFromNib]; 然后设置框架/中心并添加到superview …我认为这种方式非常有用,如果你有一个复杂UI元素的“库”,并希望通过xib设计它们,然后在需要时添加. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |