拆分视图 iPad - 重新加载表数据?

发布于 2024-11-09 14:28:37 字数 1017 浏览 1 评论 0原文

我在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

祁梦 2024-11-16 14:28:37

如果您无法拥有指向 tableView 的指针,只需使用委托或通知来告诉 RootViewController 重新加载数据。

我认为最简单的方法是在这里发出通知。检查 官方文档

简而言之,您可以通过在 RootViewController 中注册它们来添加查找通知:

[[NSNotificationCenter defaultCenter] addObserver:self
    selector:@selector(xmlDidFinish:)
    name:@"finishXML" object:nil];

在您的 XMLParser 中,当您完成这样的操作时,您实际上会发布通知

[[NSNotificationCenter defaultCenter]
    postNotificationName:@"finishXML" object:self];

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 :

[[NSNotificationCenter defaultCenter] addObserver:self
    selector:@selector(xmlDidFinish:)
    name:@"finishXML" object:nil];

And in your XMLParser, you actually post the notification when you're done like this

[[NSNotificationCenter defaultCenter]
    postNotificationName:@"finishXML" object:self];
时光礼记 2024-11-16 14:28:37

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文