iphone - 在viewDidAppear之前调用numberOfRowsInSection

时间:2011-06-17 19:48:08

标签: iphone objective-c cocoa-touch uitableview uitabbarcontroller

这可能是正常的,但我是Objective-c的新手。 我有一个带有两个视图控制器的应用程序,都是表视图。 单击一行时,我将第二个视图加载到堆栈的顶部,并通过其中一个属性传递参数。 在第一个视图(默认由导航控制器加载)上,首先调用viewDidAppear函数,它从URL打开XML文件,为每个节点构建一个对象,并将所有对象推送到一个数组中。完成此操作后,将调用numberOfRowsInSection并返回数组的计数,一切正常。 在另一个视图中,首先加载它后调用numberOfRowsInSection然后调用viewDidAppear。我是iphone的新手,我不知道为什么会发生这种情况。

谢谢!

3 个答案:

答案 0 :(得分:5)

这很正常。在整个视图加载完成并变为可见之后调用viewDidAppear。 这包括UITableView。表视图依次需要numberOfRowsInSection函数进行初始化。

UITableView加载之前,您有三个选项来执行代码:

1)将您的代码放在-viewWillAppear中 - 这有时可能会不稳定

2)UIViewController的子类(很可能你已经这样做了)并创建了一个自定义-init函数来处理你的设置

3)将初始化代码放在-numberofRowsInSection中。这始终是UITableViewDataSource被调用的第一种方法。这是一种hackish,但在实践中效果很好。

答案 1 :(得分:1)

也许您应该考虑将代码移至-viewWillAppear-viewDidLoad

答案 2 :(得分:1)

谢谢大家抽出时间回复! 我发现了这个问题。 作为xcode / iphone / mvc的新手,我忘了将视图连接到IBOutlet对象。 我生命中的几个小时我永远不会回来。