[英]ViewDidLoad not called on custom objects in Storyboard
我終於切換到情節提要,並且在加載自定義控制器時遇到了問題,這在使用界面生成器時非常容易做到。
我有兩個組成的ViewControllerOne :一個UIView和UITableView作為子視圖。
我希望UITableView由自定義tableview控制器控制。 如果這是“接口”構建器,我將把一個tableview控制器放到XIB上,鏈接到定制控制器並進行連接,就可以完成了。
使用情節提要,我認為無法將UIViewController / UITableViewController放到已經具有視圖控制器的場景上,我依靠Objects來實現這一點。
因此,我在場景上添加了一個Object並將其鏈接到我的自定義tableview控制器。 我為UITableView設置了委托/日期源,以指向自定義控制器。 最后,我將UITableViews插座連接到自定義控制器。
當我對此進行編譯時,將調用(針對表視圖的)自定義控制器委托,但從未調用過viewDidLoad。
我可以調用viewDidLoad的唯一方法是將UITableView從ViewControllerOne中移出。 我的理解是,即使場景有一個視圖控制器,我仍然可以使用自定義控制器來操作子視圖。
我是否誤解了某件事,或者對此有解決方案?
一些截圖
那有一些魔術。 從awakeFromNib調用self.view
,流程將返回到軌道
- (void)awakeFromNib
{
[super awakeFromNib];
// here comes the magic - call self.view and view will load as expected
NSLog(@"awakeFromNib %@", self.view)
}
您可以從initWithNibName:bundle調用它:
- (id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
NSLog(@"awakeFromNib %@", self.view);
}
return self;
}
關鍵是調用self.view,因為顯然內部完成了一些操作。
如果我正確理解了您的問題:
1打開情節提要,然后導航到您希望成為自定義類型的表視圖控制器。
2單擊右側面板中的身份檢查器。
3將課程設置為應有的水平。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.