以编程方式添加tableView,未调用viewDidLoad

时间:2012-10-09 11:53:31

标签: ios uitableview

我想在tableViewController中使用我的viewDidLoad函数。 如何在我的控制器中运行viewDidLoad?

tableViewController = [[TableViewController alloc] init];
UITableView *tableView = [[UITableView alloc] init];
tableViewController.view = tableView;
....

3 个答案:

答案 0 :(得分:2)

来自Apple文档:

  

在视图控制器将其视图层次结构加载到内存后调用此方法。无论视图层次结构是从nib文件加载还是在loadView方法中以编程方式创建,都会调用此方法。您通常会覆盖此方法以对从nib文件加载的视图执行其他初始化。

因此,您可以尝试从NIB实例化它或覆盖loadView方法。 Apple文档的另一步:

  

如果无法在情节提要或nib文件中定义视图,将覆盖loadView方法以手动实例化视图层次结构并将其分配给视图属性。

答案 1 :(得分:1)

在实际加载视图时将调用

viewDidLoad,这将在显示您的视图控制器后发生,例如:

  1. 将其添加到导航控制器

  2. 将其添加到标签栏控制器,

  3. 以模态方式呈现。

  4. 这是您代码中的缺失位。如果您解释如何呈现视图控制器,我可能会进一步提供帮助。另外,请看一下:Presenting View Controllers

    (我假设您试图覆盖表视图控制器的view属性这只是“让事情变得有效”的尝试 - 但您不需要对此进行任何操作,视图控制器将正确设置其中的表视图。)

答案 2 :(得分:0)

tableViewController = [[TableViewController alloc] init];
tableViewController.tableView // This is your newly generated tableview
在将tableView分配给另一个父视图之后,将调用

viewDidLoad