在performSelectorInBackground之后重新加载cellView

时间:2012-04-17 13:20:40

标签: objective-c xcode uinavigationcontroller uisearchbar reloaddata

我有一个由“导航控制器”组成的应用程序,其中包含带有搜索字段的导航项“UITableViewController”。在故事板中,搜索栏位于TableView内。

我从服务器请求XML,如果我直接在主线程上执行,它很慢但是它可以工作,来自服务器的信息会在CellView上显示“reloadData”。 但当我使用“performSelectorOnBackground”执行此操作时,我设法获取数据但我必须单击搜索栏的“取消”按钮以显示我刚查询的结果!

我已经尝试过:“[self.tableView performSelectorOnMainThread:@selector(reloadData)withObject:nil waitUntilDone:NO];”但它并没有改变它。最糟糕的是,如果我在“cellForRowAtIndexPath”中放置“NSLog”,它会显示数组的内容。而且“searchBarCancelButtonClicked”完全是空的。

对不起英语不是我的母语,感谢十亿时间的帮助!

编辑18/04/12: 现在,TableCellView以异步方式正确填充,但是存在问题。当XML的请求准备就绪时,我可以在当前视图的ViewController中看到它。但我必须在searchBox中键入另一个字母,以便将之前的结果“推”到我的tableViewCell。 现在在我当前的视图中,我调用另一个类,在另一个线程(dispatch_async)中请求另一个函数来解析XML,一旦完成,我发送一个“NSNotification”,所以我当前的视图初始化我用于填充表单的NSMutableArray。有人知道如何欺骗它吗?感谢十亿次!

1 个答案:

答案 0 :(得分:0)

完成数据解析后,调用[tableview reloadData] ;.它将用更新的数据填充您的数据。