我創建了一個UIView(KGCalloutView),並通過拖動View對象並將其設置爲KGCalloutView將其放置在Storyboard(Main.storyboard)中。當我運行項目時,視圖從不顯示在故事板中。UIView不在故事板上顯示
我第一次嘗試解決需要添加以下方法,但它導致我相信一個無限循環(可以理解)並最終崩潰。
- (void)awakeFromNib {
if ([[NSBundle mainBundle] loadNibNamed:@"KGCalloutView" owner:self options:nil]) {
[self.view setFrame:[self bounds]];
[self addSubview:self.view];
}
}
接下來我嘗試添加下面的init方法,但沒有解決問題之一:
- (id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
}
return self;
}
我嘗試後我的.xib和Main.storyboard的圖像,但我想我的名聲ISN還不夠高。
這裏是KGCalloutView.h:
@interface KGCalloutView : UIView <UIPickerViewDataSource, UIPickerViewDelegate>
@property (nonatomic) IBInspectable NSString *title;
@property (strong, nonatomic) IBOutlet KGCalloutView *view;
@property (weak, nonatomic) IBOutlet UITextField *titleField;
@property (weak, nonatomic) IBOutlet UIPickerView *typePickerView;
@end
這裏是KGCalloutView.m:
- (id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
}
return self;
}
- (void)awakeFromNib {
if ([[NSBundle mainBundle] loadNibNamed:@"KGCalloutView" owner:self options:nil]) {
[self.view setFrame:[self bounds]];
[self addSubview:self.view];
}
}
-(void)layoutSubviews{
self.titleField.text = @"test";
self.typePickerView.dataSource = self;
self.typePickerView.delegate = self;
}
這裏是我的ViewController.h:
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet KGCalloutView *callout;
@end
這裏是我ViewController.m:
- (void)viewDidLoad {
[super viewDidLoad];
}
感謝莎莉。問題是我不想在視圖控制器中加載視圖。我希望能夠在界面生成器中將視圖添加到視圖控制器,以便我可以添加我的約束。我知道我可以通過編程添加約束,但我寧願不必。 –
此外,我的視圖KGCalloutView.xib的文件所有者是KGCalloutView,它是UIView的子類,而不是UIViewController,如果不清楚的話。 –
對於第二個項目,我確實在視圖控制器上有一個與故事板上的KGCalloutView對象綁定的屬性。 –