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