Sef*_*an2 61 objective-c xib addsubview ios
我在xib中创建了一个视图(带有活动指示器,进度视图和标签).然后我创建了.h/.m文件:
#import <UIKit/UIKit.h>
@interface MyCustomView : UIView {
IBOutlet UIActivityIndicatorView *actIndicator;
IBOutlet UIProgressView *progressBar;
IBOutlet UILabel *statusMsg;
}
@end
#import "MyCustomView.h"
@implementation MyCustomView
- (id)initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
// Initialization code
}
return self;
}
- (void)dealloc {
[super dealloc];
}
@end
Run Code Online (Sandbox Code Playgroud)
在IB中,我将文件的所有者和查看标识设置为MyCustomView并将IBOutlet连接到文件的所有者
在MyViewController.m中,我:
- (void)viewDidLoad {
[super viewDidLoad];
UIView *subView = [[MyCustomView alloc] initWithFrame:myTableView.frame];
[subView setBackgroundColor:[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.5]];
[myTableView addSubview:subView];
[subView release];
}
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序时,视图已添加,但我看不到标签,进度条和活动指示器.
我究竟做错了什么?
Ned*_*Ned 131
您需要使用该-loadNibNamed方法加载它.-initWithNibName仅适用于UIViewControllers.
将以下代码添加到MyCustomView init方法:
NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:self options:nil];
UIView *mainView = [subviewArray objectAtIndex:0];
[self addSubview:mainView];
Run Code Online (Sandbox Code Playgroud)
请记住,如果要从nib初始化对象,则会调用- (id)initWithCoder:(NSCoder *)aDecoderinitialize,因此如果要在nib中创建MyCustomView对象,则必须覆盖它.如果您正在使用它initWithFrame:,那么只需覆盖它并添加上面的代码.此外,在您的笔尖中,确保您有一个顶级UIView,并将所有其他元素放在其中(这样可确保您的subviewArray只有一个条目).
这将从笔尖加载视图并将它们添加到对象,并应该做到这一点.
| 归档时间: |
|
| 查看次数: |
77065 次 |
| 最近记录: |