0

我最初制作了一个包含 5 个 tableviewcells 的应用程序,其中每个单元格都有自己的图像,并且一旦单元格有一个包含占位符文本的 uitextfield 删除。当该单元格被点击时,它会调用一个 uipicker 并将值返回给 uitextfield。我没有使用 cellForRowAtIndexPath 方法。

我不得不以编程方式重做单元格的图像视图,因为当单元格被点击时我必须使用一些新的行为。所以我不得不用一个 switch case 来实现 cellForRowAtIndexPath 来填充每个单元格。我用其中的 UIImageViews 完成了单元格,但我被包含 UITextField 的单元格难住了。

以编程方式创建的 uitextfield 不显示。这是代码:

- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {


    UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"] autorelease];

    switch (indexPath.row) {
        case 0:
            cell.imageView.image = [UIImage imageNamed:@"Location1.jpg"];
            break;
        case 1:

            break;
        case 2:
            self.myCity = [[UITextField alloc] initWithFrame:CGRectMake(200,6,100,30)];
            self.myCity.text = @"Pick a city...";
            //Call UIPicker
            break;
        case 3:
            cell.imageView.image = [UIImage imageNamed:@"driveThru1.jpg"];
            break;
        case 4:
            cell.imageView.image = [UIImage imageNamed:@"24hrs1.jpg"];
            break;
        case 5:
            break;
        default:
            break;
    }


    return cell;
}

这是故事板:

在此处输入图像描述

结果如下:

在此处输入图像描述

4

1 回答 1

0

您正在使用新创建的 UITextField 设置属性 myCity。此文本字段实际上从未添加为单元格的子视图。

这是我的建议。创建 UITableViewCell 的子类,并在它的 initWithFrame 方法中创建 UITextField 并将其添加为单元格的子视图。确保在 cellForRowAtIndexPath 中为文本字段和非文本字段单元格使用唯一的重用标识符,以便所有内容都正确出列。

于 2013-06-07T23:32:37.343 回答