iOS 7中的UITextField中的setter不起作用,但在iOS 6中工作

时间:2014-05-10 12:25:11

标签: ios objective-c uitableview uitextfield

    -(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。

2 个答案:

答案 0 :(得分:0)

[self.tableView cellForRowAtIndexPath:...]

为当前不可见的行返回nil(并且可能会返回nil 通常在viewWillAppear:)。 在这种情况下,cell.userDatanil,设置文字或标签完全没有效果。

好像你在(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;
}