自定义tableviewcell中的文本字段在滚动时离开单元格

问题描述 投票:0回答:3

我正在开发一个应用程序,我在XIB中使用带有自定义uitableviewcell的UITableview。

我的问题是,我已经通过xib将textfield放在tableviewcell上。我正在我的viewcontroller类中访问此自定义单元格,该类具有tableview。下面是我的cellForRowAtIndexPath:方法的代码。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *STI=@"STII";
    AnalysedScreenCell *cell = (AnalysedScreenCell *)[tableView dequeueReusableCellWithIdentifier:STI];
    if (cell == nil)
    {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"AnalysedScreenCell" owner:self options:nil];
        cell = [nib objectAtIndex:0];
        cell.accessoryType=UITableViewCellAccessoryNone;
    }

    cell.selectionStyle = UITableViewCellSelectionStyleNone;

    cell.txtDetails.delegate=self;
    cell.txtDetails.text = [countArray objectAtIndex:indexPath.row];
    [cell.txtDetails setTag:1];
    [cell.txtDetails addTarget:self action:@selector(textFieldDidChange:) forControlEvents: UIControlEventEditingChanged];

    cell.txtName.delegate=self;
    cell.txtName.text = [nameArray objectAtIndex:indexPath.row];
    [cell.txtName setTag:2];
    [cell.txtName addTarget:self action:@selector(textFieldDidChange:) forControlEvents: UIControlEventEditingChanged];

    cell.txtDate.delegate=self;
    cell.txtDate.text = [dateArray objectAtIndex:indexPath.row];
    [cell.txtDate setTag:3];
    [cell.txtDate addTarget:self action:@selector(textFieldDidChange:) forControlEvents: UIControlEventEditingChanged];
return cell;
}

但是当我尝试滚动tableview时,表视图中的文本字段进入另一个单元格。我也尝试为它设置一个可重用的标识符,但它不起作用。

这是我的问题的形象

Tableview when scrolled

ios objective-c uitableview scroll reuseidentifier
3个回答
2
投票

在您的类>中添加此委托方法

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return 100; // change as per your needs

}

0
投票

@KKRocks所说的完美无缺......

另一个选项是在tableview的属性中设置如下:

enter image description here


0
投票

问题可能是

您已将表视图单元格的高度设置得较小,因此textField高度不适合它。

因此,请提供表格视图单元格的高度,使其包含textField的高度。

例如 :

假设你的textField高度为40,你的上下边距分别为10和10。

因此,提供高度为60或超过60。

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return 60; 
}
© www.soinside.com 2019 - 2024. All rights reserved.