现在的位置: 首页 > 综合 > 正文

IOS开发中,手工要求UITableView 根据新的内容重写画表单的方法

2013年07月16日 ⁄ 综合 ⁄ 共 673字 ⁄ 字号 评论关闭

例如:有这样的需求。IOS客户端有个UITableView的视图,在初始化的时候读取了数据,画出了表单。

晚些时候,后台的数据发生了变化。通知TableView根据新的数据重画表单。这个时候,由于初始化方法已经不可能在被调用。所以无法在重画。

我的解决办法是 ,通过viewDidAppear 的方法里面加入强制重画语句,使得这个TableView再下次显示的时候,按照新的数据重画表单。

这里主要强调的是 强制重画的调用函数

[(UITableView *)([[self.view subviews] objectAtIndex:1]) reloadData];

主要思路是从这个Controller中获得所有的子视图,由于我的nib文件中TableView位于View下面 ,所以他的索引是1,即是第二个子视图。然后对这个变量进行类型装换。再调用reloadData方法。

可以通过  NSLog(@"%@",[(UITableView *)([[self.view subviews] objectAtIndex:1]) description]); 这段代码,来确定类型是否是TableView。如果不是,进行强转,会引起程序崩溃。

reloadData方法,就是要求TableView根据新的数据,重写画表单。我们只需要调用这个方法,就会让委托自己发送请求调用 -(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 这个方法来画cell。

抱歉!评论已关闭.