我有自定义UITableViewCell
,我们称之为CustomCell
。我只需要在创建时传递一个参数,让我们说NSURL
。
这是我迄今为止在ViewController
:
在viewDidLoad
:
[myTableView registerClass: [CustomCell class] forCellReuseIdentifier: @"CustomItem"]
在tableView:cellForRowAtIndexPath:
static NSString *myIdentifier = @"CustomItem"
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:myIdentifier]
所有这一切都很有效,但我需要使用这个NSURL
配置单元格,但只需一次,而不是每次调用cellForRowAtIndexPath
。我注意到initWithStyle: reuseIdentifier:
中的CustomCell
仅被调用一次,但如何通过此调用添加NSURL
?
答案 0 :(得分:4)
您只需在NSArray
内加载viewDidLoad
即可。在cellForRowAtIndexPath:
内,您可以添加NSArray
中的网址,然后将其插入UITableViewCell
。
static NSString *myIdentifier = @"CustomItem"
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:myIdentifier]
[cell.labelURL setText:_arrayURLs[indexPath.row]];
您需要做的就是在 CustomCell 中添加一个名为 labelURL 的新属性,并将其与UILabel
内的UIStoryboard
相关联或xib
档案。
考虑一下,你不能只设置一次。 UITableViewCell
将重用其UITableViewCells
并始终将多次另一个值设置为同一对象。这就是为什么你必须这样做而不仅仅是一次。
答案 1 :(得分:1)
UITableViewCell
重复使用相同类型的 cellForRowAtIndexPath:
。如果您希望property
保持不变,则应该进入 A 区域。如果您希望它更改每个单元格,它应该位于区域 B
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"CustomCell";
CustomCell *cell =
[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell) {
cell = [[CustomCell alloc]initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier];
// (A) everything inside here happens once
// for example
cell.textLabel.backgroundColor = [UIColor redColor];
}
// (B) everything here happens every reuse of the cell
// for example
cell.textLabel.text = [NSString stringWithFormat:@"%li",
(long)indexPath.row];
return cell;
}