我有一個繼承自UIView的類,並且此類具有一些我在IB中放置的控件。具有NIB文件的iOS UIView子類不顯示在IB中設計的UI
然後,在我的主視圖控制器的NIB文件中,我放置了一個視圖,並將該類更改爲我的子類,並創建了子類的出口。但是,當我運行我的應用程序時,應用程序不顯示我放在子類上的UI,它只是空白。
我收到的initWithCoder和awakeFromNib消息在子類中,這裏是子類.m文件基本上是這樣的:
#import "AnalyticsDetailView.h"
@implementation AnalyticsDetailView
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
return self;
}
- (void)awakeFromNib
{
[super awakeFromNib];
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
NSArray *v = [[NSBundle mainBundle] loadNibNamed:@"AnalyticsDetailView" owner:self options:nil];
[self addSubview:[v objectAtIndex:0]];
}
return self;
}
- (void)dealloc
{
[super dealloc];
}
@end
我不知道,如果initWithFrame是正確的,但因爲該方法沒有開火,我懷疑這一點並不重要。如果我在看到子類方法觸發後在應用程序中放置斷點,則可以查看outlet子類,並且該框架與我在IB中創建的相同。
任何人有任何建議(缺少代碼,不良的IB連接等)在什麼尋找我已經錯過了或做錯了嗎?謝謝。
你爲什麼要在一個視圖做一個的initWithCoder方法?是否有一些應用程序特定的數據正在歸檔/解壓縮? –
另外,在awakeFromNib中設置一個斷點......如果它不是被加載的AnalyticsDetailView,那麼哪個nib文件***被加載? initWithFrame只會在你從父對象顯式地調用它的時候觸發(當你創建視圖時)。 –