ViewDidLoad未在Storyboard中调用自定义对象

时间:2014-08-05 20:14:39

标签: ios storyboard interface-builder uistoryboard

我终于切换到了Storyboards,我在加载自定义控制器时出现问题,这在使用界面构建器时非常容易。

我有 ViewControllerOne ,有两个组件: UIView UITableView 作为子视图。

我希望 UITableView 由自定义的tableview控制器控制。如果这是Interface builder我会将一个tableview控制器放到XIB上,链接到自定义控制器并建立连接,它就完成了。

使用storyboard,我不相信它可以将 UIViewController / UITableViewController 放到已经有视图控制器的场景上,我依靠Objects实现这一点。

所以我在场景中添加了一个Object并将其链接到我的自定义tableview控制器。我为 UITableView 设置了委托/日期源,以指向自定义控制器。我最终将UITableViews插座连接到自定义控制器。

当我编译它时,调用自定义控制器委托(对于表视图),但从不调用viewDidLoad。

我可以调用viewDidLoad的唯一方法是将UITableView移出ViewControllerOne。我的理解是,即使有一个场景的视图控制器,我仍然可以使用自定义控制器操纵子视图。

我误解了什么或是否有解决方案?

一些截图 TableView

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:2)

有一点神奇之处。从awakeFromNib调用self.view,流程将返回到rails

- (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 :(得分:0)

如果我理解你的问题:

1打开故事板并导航到您希望成为自定义类型的表视图控制器。

2单击右侧面板中的身份检查器。

3将课程设置为应该是什么。