-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
...
for (int i = 0; i < 6; i++) {
VVUserInformationCell *cell = (VVUserInformationCell*)[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];
NSLog(@"%@", array[i][1]);
[cell.userData setText: array[i][1]];
[cell.userData setTag:i];
NSLog(@"%@", cell.userData.text);
NSLog(@"%d", cell.userData.tag);
}
}
在iOS6中它运行良好。但是在iOS7中,array [i] [1]是我想要的,但是在setText为null之后的cell.userData.text中,并且在setTag之后,所有内容都为0。 cell是UITableView的一部分,它是我的控制器的子视图,userData是单元格内的UITextField。
答案 0 :(得分:0)
[self.tableView cellForRowAtIndexPath:...]
为当前不可见的行返回nil
(并且可能会返回nil
通常在viewWillAppear:
)。
在这种情况下,cell.userData
为nil
,设置文字或标签完全没有效果。
好像你在(ab)使用 表格查看单元格作为数据源。由于上述原因,这不起作用 因为表视图单元格重用。
您必须填写
中的单元格内容- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
而不是方法。
答案 1 :(得分:0)
我认为您应该使用UITableViewDataSource / cellForRowAtIndexPath方法来配置您的单元格中的数组[i] [1]
这样的事情:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; {
return [array count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
VVUserInformationCell *cell = [tableView dequeueReusableCellWithIdentifier:@"VVUserInformationCellID"];
if (!cell) {
cell = [[[NSBundle mainBundle] @"VVUserInformationCell" owner:nil options:nil] objectAtIndex:0];
}
[cell.userData setText:array[indexPath.row][1]];
[cell.userData setTag:indexPath.row]
return cell;
}