我有一个UITableView,我希望通过计时器调用的方法进行更新。我现在拥有的是:
-(void) populateTable {
NSLog(@"done");
NSArray *array = [[NSArray alloc] initWithObjects:@"ob 1",@"ob 2",@"ob 3",nil];
self.listData = array;
[array release];
}
- (void)viewDidLoad {
[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(populateTable) userInfo:nil repeats:YES];
[super viewDidLoad];
}
#pragma mark -
#pragma mark Table View Data Source Methods
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section
{
return [self.listData count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";
UITableViewCell *cell = [tableView
dequeueReusableCellWithIdentifier:SimpleTableIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:SimpleTableIdentifier] autorelease];
}
NSUInteger row = [indexPath row];
cell.textLabel.text = [listData objectAtIndex:row];
return cell;
}
如果我将数组和self.listData = array
放入viewDidLoad
它可以正常工作,但不会重复。正在调用我的方法populateTable
,但实际上并没有在表中添加任何内容。这是我第一次使用UITableView,所以我不太了解它们是如何工作的。我按照教程做了很多。如何使用方法填充数据?
答案 0 :(得分:3)
您还应该在桌面上拨打reloadData
。
答案 1 :(得分:0)
您需要将计时器添加到运行循环中 - 现在您创建NSTimer对象,但由于它从未进入运行循环,因此它会触发一次并停止。在viewDidLoad
:
NSTimer * timer = [NSTimer scheduledTimerWithTimeInterval:2.0
target:self
selector:@selector(populateTable)
userInfo:nil
repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
答案 2 :(得分:0)
您必须通知您有关阵列中新条目的信息。
像
这样的东西 [self.tableView insertRowsAtIndexPaths:indexArray withRowAnimation:UITableViewRowAnimationFade];
在这种情况下,indexArray是一个IndexPaths数组,它提供更新数组的信息。
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
NSArray *indexArray = [NSArray arrayWithObject:indexPath];
之后视图会调用tableView:cellForRowAtIndexPath:methode获取对象。
顺便说一句。 IHMO你最好建模NSMutableArray
,你可以添加一些东西。
在populateTable
的实现中,您只需替换您的数组。
PS:仅调用reloadData
...分配新数据源时。重新加载表视图会清除当前状态,包括当前选择...(UITableView类参考)