【发布时间】:2015-12-16 20:31:36
【问题描述】:
我决定在我的项目中使用不可重用的自定义 UITableView 单元,因为我在每个单元中运行一个计时器,并且使用可重用单元更新一个单元的计时器会重置所有计时器。实际上,计时器正在我的视图控制器中运行,但输出显示在单元格中。但是这个问题要基本得多:为什么单元格中 UILabel 中的文本没有更新?我在 IB 中设置了 2 个插座:nameLabel 和 timeLabel,并将它们连接到单元格的头文件,IB 显示连接的插座。但是,即使尝试将文字字符串移动到 UILabel 文本字段中也会导致“nil”。我怀疑我做的事情基本上是错误的,但我无法弄清楚。当我使用可重复使用的电池时没有问题。这是分配和初始化一个可变数组以保存单元格的代码部分,添加一个单元格,然后尝试将文字字符串移入其中。在 NSLog 语句处设置断点显示 cell.nameLabel.text 为“nil”。任何帮助将不胜感激!我已经阅读了 UITableViewCell 参考和编程指南,但他们只讨论了使用可重复使用的单元格。我认为将reuseIdentifier设置为'nil'会得到一个不可重用的单元格,但我不确定。
-(IBAction)addNewItem:(id)sender
{
// get a new item.
NRCItem *newItem = [[NRCItemStore sharedStore] createItem];
// set timerType to 1 (seconds) - default
newItem.timerType = 1;
// get a timer controller
NRCTimerControllerViewController *timerViewController = [[NRCTimerControllerViewController alloc]init];
// set timer controller's item
timerViewController.item = newItem;
// get a new tableViewCell
if(!_myTableViewCells){
_myTableViewCells = [[NSMutableArray alloc]init];
}
NRCItemCell *cell = [[NRCItemCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:nil];
cell.nameLabel.text =@"cell";
NSLog(@"addTableViewCell cell= %@", cell);
[_myTableViewCells addObject:cell];
// push the timerViewController onto the navigation controller's stack
[self.navigationController pushViewController:timerViewController animated:YES];
}
在此处输入代码
【问题讨论】:
-
你能展示你的
cellForRowAtIndexPath方法吗?顺便说一句,正确的方法是您需要将数据模型与单元格分开。例如,使用一个 NSNumber 数组,每个 NSNumber 代表一行中经过的时间。在单个计时器方法中更新所有计数并使用cellForRowAtIndexPath检索显示的单元格并更新它们。 -
这里是现在工作的代码。我不确定发生了什么变化,但也许我没有设置委托来设置标签文本。
标签: ios uitableview