【发布时间】:2011-08-02 12:39:24
【问题描述】:
如果您不像我那么盲目,我有一个问题可能相当容易。我有一个带有海关单元格的表格视图,这些单元格从数据源中获取信息。在这个自定义单元格中,我有一个按钮可以更改所有单元格的数据源。按下一个单元格中的按钮应该使所有其他单元格变暗。数据源已更改,但我的问题是只有当我在表格视图中拖动单元格时,单元格才会更新。按下按钮时的方法放在tableview中,以[tableview reloadData]结尾;但它只在拖动时更新。
感谢任何帮助
--更新-- 下面显示了按下按钮时调用的方法。 switch case 改变了数据源。 button.tag 用于查看按钮被按下的单元格。
-(void)myPackageButtonPushed:(id)sender
{
UIButton* myButton = (UIButton*)sender;
NSLog(@"id %d",myButton.tag);
int test=myButton.tag;
for (int i=0; i<[packageList count]; i++) {
TVPackage *tvpack=[packageList objectAtIndex:i];
[tvpack setMyPackage:NO];
}
switch (test) {
case 0:
NSLog(@"0");
[[packageList objectAtIndex:0] setMyPackage:YES];
[[packageList objectAtIndex:1] setMyPackage:YES];
break;
case 1:
NSLog(@"1");
[[packageList objectAtIndex:0] setMyPackage:YES];
[[packageList objectAtIndex:1] setMyPackage:YES];
break;
case 2:
NSLog(@"2");
[[packageList objectAtIndex:2] setMyPackage:YES];
[[packageList objectAtIndex:3] setMyPackage:YES];
break;
case 3:
NSLog(@"3");
[[packageList objectAtIndex:2] setMyPackage:YES];
[[packageList objectAtIndex:3] setMyPackage:YES];
break;
case 4:
NSLog(@"4");
[[packageList objectAtIndex:4] setMyPackage:YES];
[[packageList objectAtIndex:5] setMyPackage:YES];
break;
case 5:
NSLog(@"5");
[[packageList objectAtIndex:4] setMyPackage:YES];
[[packageList objectAtIndex:5] setMyPackage:YES];
break;
default:
break;
}
[self.tableview performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
}
【问题讨论】:
-
通过在 cellForRowAtIndexPath 方法中设置断点来确认 tableview 是否真的重新加载..
-
方法 cellForRowAtIndexPath 在调用 [reload data] 时不会立即调用。我在 cellForRowAtIndexPath 中有几个 nslog,它们在 tableview 时被调用。被拖了
-
根据您的评论,您尚未使用有效对象重新加载 tableview。在此处显示代码 sn-ps 以获得更好的解决方案。
标签: iphone uitableview custom-cell