Vin*_*ath 4 xcode objective-c interface-builder xib uiview
我想使用Interface Builder设计一个UIView和一些子视图(UIWebView,UIToolbar,一些UIBarButtonItems,一个进度指示器等等),但我认为传统上不需要使用UIViewController,presentViewController:animated等等
所以,我创建了一个自定义类, .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;
Run Code Online (Sandbox Code Playgroud)
我的.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;
}
Run Code Online (Sandbox Code Playgroud)
最后,我创建了一个名为"FileInteractionView.xib"的独立xib文件,将文件的所有者更改为我在上面创建的自定义类,并连接IBOutlets.
当我init在我的类上调用该方法时,我可以在调试器中看到我的所有IBOutlet对象都已正确实例化.
我的问题是:
该loadNibNamed:owner:options:方法是加载我的独立.xib文件的正确方法吗?我不喜欢这个方法返回一个我没用的数组(返回的顶级对象匹配我的变量fileView,但我已经通过Interface Builder链接它们).
我的一般方法是否正确解决我的问题?我执行了上面的步骤,因为我想要一个简单的UIView对象,我可以添加到我现有的UIViewController,而不是呈现和解散一个全新的UIViewController.
我使用一种不同的方法.我创建了UIView(MyCustomView ie)的子类,然后创建了具有视图UI的xib,并将(主)视图类更改为刚刚定义的视图.在xib中,您可以将插座链接到自定义视图本身(而不是文件所有者).最后在类定义中我创建了一个这样的函数:
+ (id) newFromNib
{
NSArray *nibArray = [[UINib nibWithNibName:NSStringFromClass([self class]) bundle:nil] instantiateWithOwner:nil options:nil];
return nibArray[0];
}
Run Code Online (Sandbox Code Playgroud)
只是几个注释:1)这是一个类方法,你可以使用"self"只是为了"NSStringFromClass([self class])"这样的东西,但真正的对象是返回的变量2)这个例子假设xib有相同的类的名称(通过NSStringFromClass([self class]),所以我可以复制粘贴它而不改变任何东西;))并且你的视图是xib(标准)中定义的第一个视图.如果您在一个xib中存储多个"主"视图,请选择正确的元素.
所以我需要MyCustomView我做的事情:
MyCustomView* mycv = [MyCustomView newFromNib];
Run Code Online (Sandbox Code Playgroud)
然后设置框架/中心并添加到superview ...我认为这种方式非常有用,如果你有一个复杂UI元素的"库",并希望通过xib设计它们,然后在需要时添加.
| 归档时间: |
|
| 查看次数: |
1206 次 |
| 最近记录: |