簡體   English   中英

未在情節提要中的自定義對象上調用ViewDidLoad

[英]ViewDidLoad not called on custom objects in Storyboard

我終於切換到情節提要,並且在加載自定義控制器時遇到了問題,這在使用界面生成器時非常容易做到。

我有兩個組成的ViewControllerOne :一個UIViewUITableView作為子視圖。

我希望UITableView由自定義tableview控制器控制。 如果這是“接口”構建器,我將把一個tableview控制器放到XIB上,鏈接到定制控制器並進行連接,就可以完成了。

使用情節提要,我認為無法將UIViewController / UITableViewController放到已經具有視圖控制器的場景上,我依靠Objects來實現這一點。

因此,我在場景上添加了一個Object並將其鏈接到我的自定義tableview控制器。 我為UITableView設置了委托/日期源,以指向自定義控制器。 最后,我將UITableViews插座連接到自定義控制器。

當我對此進行編譯時,將調用(針對表視圖的)自定義控制器委托,但從未調用過viewDidLoad。

我可以調用viewDidLoad的唯一方法是將UITableView從ViewControllerOne中移出。 我的理解是,即使場景有一個視圖控制器,我仍然可以使用自定義控制器來操作子視圖。

我是否誤解了某件事,或者對此有解決方案?

一些截圖 的TableView

在此處輸入圖片說明

在此處輸入圖片說明

那有一些魔術。 從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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM