从频繁更改的NSArray刷新UItableView数据

时间:2012-01-01 11:58:34

标签: iphone objective-c ios cocoa-touch ios5

我有一个UITableView,我正在从网络服务中读取数据。 来自Web服务的数据可能随时更改,因此我必须定期刷新我的数据。

我已设法刷新数据并将其存储在NSArray中,但UITableView不会显示这些数据。

我试过

[myTableView reloadData];

但它没有效果。

修改

我已经实现了将数据从NSArray加载到UiTableView的所有方法。 这在ViewDidLoad中初始化NSArray时有效。

但如果在应用程序运行时NSArray发生了更改,则UITableView将不会显示这些更改。

2 个答案:

答案 0 :(得分:3)

您需要实施UITableViewDataSource委托协议,特别是- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

使用此方法设置单元格。您可以使用row的{​​{1}}属性来确定要设置的单元格,并为其提供阵列中的数据。

例如

indexPath

修改

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } id item = [dataArray objectAtIndex:indexPath.row]; // Whatever data you're storing in your array cell.textLabel.text = [item description]; // Substitute this for whatever you want to do with your cell. } 应该致电 reloadData
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
看是否有任何细胞被绘制。确保您也实现了这些方法并返回非零值,否则您的表视图将不会尝试绘制任何单元格,并且不会调用- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

<强>解析
您可能也对this library感兴趣,它声称可以使远程数据驱动表更加简单。

答案 1 :(得分:0)

您必须调用将内容放入表中的函数。