拆分视图 iPad - 重新加载表数据?
我在 Xcode 中创建了一个分割视图项目,并使用 NSXMLParser
从 Internet 上的 XML 文件检索数据。数据很好,并且假设结构正确,但是当我对其进行测试时,我发现 UITableViewDelegate
方法在我的 NSXMLParser 完成数据运行之前被调用,从而产生一个空白表。正如许多 StackOverflow 问题中所引用的那样,我在预定义类中没有看到任何指向 self.tableView 的链接。在 NSXMLParser
完成其工作后,我将如何重新加载 RootViewController
中的数据?
编辑我在代码中设置了一些NSLog
点,您可以通过此控制台输出看到之前调用了UITableViewDelegate
方法数组有任何对象
2011-05-23 19:41:17.591 appname[2804:207] numberOfSectionsInTableView array count: 0
2011-05-23 19:41:17.596 appname[2804:207] numberOfSectionsInTableView array count: 0
2011-05-23 19:41:17.600 appname[2804:207] numberOfSectionsInTableView array count: 0
2011-05-23 19:41:17.610 appname[2804:7303] callParse array count: 2
2011-05-23 19:41:19.911 appname[2804:207] hudWasHidden array count: 2
EDIT2 让我澄清一下:如何创建与使用分割视图模板创建的窗口左侧的 UITableView
的某种连接?它不是在 Interface Builder 中创建的,因此我无法执行 IBOutlet
。
I've created a split view project in Xcode and I'm using an NSXMLParser
to retrieve data from and XML file on the Internet. The data comes in fine and assumes the correct structure, but when I test it out, I found that UITableViewDelegate
methods are called before my NSXMLParser has completed it's run through the data, thus resulting in a blank table. I don't see any link in the pre-defined classes to self.tableView
as cited in so many StackOverflow questions. How would I go about reloading the data in the RootViewController
after the NSXMLParser
completes its job?
EDIT I've set up some NSLog
points in my code, and you can see by this console output that the UITableViewDelegate
methods are being called before the array has any object
2011-05-23 19:41:17.591 appname[2804:207] numberOfSectionsInTableView array count: 0
2011-05-23 19:41:17.596 appname[2804:207] numberOfSectionsInTableView array count: 0
2011-05-23 19:41:17.600 appname[2804:207] numberOfSectionsInTableView array count: 0
2011-05-23 19:41:17.610 appname[2804:7303] callParse array count: 2
2011-05-23 19:41:19.911 appname[2804:207] hudWasHidden array count: 2
EDIT2 Let me clarify more: how can I create some sort of connection to the UITableView
on the left side of the window created with the Split-View template? It's not created in Interface Builder, so I can't do an IBOutlet
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您无法拥有指向 tableView 的指针,只需使用委托或通知来告诉 RootViewController 重新加载数据。
我认为最简单的方法是在这里发出通知。检查 官方文档。
简而言之,您可以通过在 RootViewController 中注册它们来添加查找通知:
在您的 XMLParser 中,当您完成这样的操作时,您实际上会发布通知
If you can't have a pointer to the tableView, simply use delegation or notifications to tell your RootViewController to reload the data.
The simply approach would be notifications here I think. Check the official documentation.
In a nutshell, you add look for notification by registering for them like this in the RootViewController :
And in your XMLParser, you actually post the notification when you're done like this
UITableView 有一个方法
reloadData
,它将再次调用 tableViews 委托方法(从而重新填充表格)。解析器完成其工作后,调用[tableView reloadData]
,其中 tableView 应替换为您的 UITableView 实例。UITableView has a method
reloadData
which will call the tableViews delegate methods again (thus repopulating the table). Once the parser completes it's job, call[tableView reloadData]
where tableView should be replaced with your UITableView instance.