Objective c tableview赢得';在将对象添加到数组后更新

Objective c tableview赢得';在将对象添加到数组后更新,objective-c,ios,uitableview,nsarray,Objective C,Ios,Uitableview,Nsarray,我的主视图是一个web浏览器,在一个popover中有一个tableview。每当用户访问某个网页时,我希望它将该网页添加到最近访问过的网站列表中。我设置了代码,将URL作为字符串添加到作为表视图数据源的数组中。表视图只显示访问过的第一个站点,不会显示超过该站点的任何内容。但是,我知道这些站点正在添加到阵列中,因为阵列在添加后使用NSLog语句显示这些站点。然而,他们仍然不会出现在桌子上。有人能帮我吗 编辑: 试一试 添加新数据后。尝试 添加新数据后。还要确保从返回正确的数组长度-tableVi

我的主视图是一个web浏览器,在一个popover中有一个tableview。每当用户访问某个网页时,我希望它将该网页添加到最近访问过的网站列表中。我设置了代码,将URL作为字符串添加到作为表视图数据源的数组中。表视图只显示访问过的第一个站点,不会显示超过该站点的任何内容。但是,我知道这些站点正在添加到阵列中,因为阵列在添加后使用NSLog语句显示这些站点。然而,他们仍然不会出现在桌子上。有人能帮我吗

编辑:

试一试

添加新数据后。

尝试


添加新数据后。

还要确保从
返回正确的数组长度-tableView:numberOfRowsInSection:
还要确保从
返回正确的数组长度-tableView:numberOfRowsInSection:
如果不想进行动画更新,可以调用:

[self.tableView performSelectorOnMainThread:@selector(reloadData)with object:nil waitUntilDone:NO]


如果您需要动画,最好阅读:,您需要
批量插入…
零件。

如果您不想更新动画,可以调用:

[self.tableView performSelectorOnMainThread:@selector(reloadData)with object:nil waitUntilDone:NO]


如果您需要动画,最好阅读:,您需要
批量插入…
零件。

如果您有一个大表,
[tableView reloadData]
可能并不理想。它还会将视图重置为表的开头,这可能是可取的,也可能是不可取的。您可以尝试以下方法:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:_model.recordCount - 1 inSection:0];
[_tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationRight];
[_tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:NO];
顺便说一句,_model是示例中表的数据委托类


另外,请确保数据委托在插入之前正确更新了其总计数,否则您的应用程序将在insertRowsAtIndexPaths上崩溃。

如果您有一个大表,
[tableView reloadData]
可能不太理想。它还会将视图重置为表的开头,这可能是可取的,也可能是不可取的。您可以尝试以下方法:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:_model.recordCount - 1 inSection:0];
[_tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationRight];
[_tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:NO];
顺便说一句,_model是示例中表的数据委托类


另外,请确保数据委托在插入之前正确更新了其总计数,否则您的应用程序将在InsertRowstIndExpaths上崩溃。

您是否正在调用
[tableView reloadData]
?是,但它会删除以前存在的数据您正在调用
[tableView reloadData]
?是的,但它会删除以前存在的数据。当我执行此操作时,我必须在添加数据之前将其放置,并显示为[tableView reloadData];还有在消失之前存在的数据显示numberOfSectionsInTableView:、numberOfRowsInSection:和cellForRowAtIndexPath:的委托方法。把你原来的问题放进去,以便格式化。我已经解决了。在更新numberOfRowsInSection之后,我必须再次重新加载数据:当我这样做时,我必须在添加数据之前将其放入,并显示为[tableView reloadData];还有在消失之前存在的数据显示numberOfSectionsInTableView:、numberOfRowsInSection:和cellForRowAtIndexPath:的委托方法。把你原来的问题放进去,以便格式化。我已经解决了。更新numberOfRowsInSection后,我必须重新加载数据:
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:_model.recordCount - 1 inSection:0];
[_tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationRight];
[_tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:NO];