如何创建类似iphone联系人地址单元的UITableViewCell?

如何创建类似iphone联系人地址单元的UITableViewCell?,iphone,layout,uitableview,Iphone,Layout,Uitableview,我需要帮助,弄清楚如何创建一个类似iphone联系人应用程序中表示地址的单元格。我不想创建一个地址。我只需要知道如何在编辑模式下显示以下内容: 左侧的文本(如UITableViewCellStyleValue2) 分隔左右两侧的灰线 右手边的内容是自定义格式的——根据我在这里要展示的内容,我会有不同的格式,高度不同 非常感谢您提供任何示例代码、苹果示例(尽管我找不到)、教程或通用指南。我试图避免创建一个自定义容器类来处理左边的所有内容,并根据我想放在右边的内容动态调整大小。肯定有人已经这么做了,

我需要帮助,弄清楚如何创建一个类似iphone联系人应用程序中表示地址的单元格。我不想创建一个地址。我只需要知道如何在编辑模式下显示以下内容:

  • 左侧的文本(如UITableViewCellStyleValue2)
  • 分隔左右两侧的灰线
  • 右手边的内容是自定义格式的——根据我在这里要展示的内容,我会有不同的格式,高度不同
  • 非常感谢您提供任何示例代码、苹果示例(尽管我找不到)、教程或通用指南。我试图避免创建一个自定义容器类来处理左边的所有内容,并根据我想放在右边的内容动态调整大小。肯定有人已经这么做了,对吗?:)


    编辑模式如下所示:

    您必须创建自己的UITableViewCell子类,这并不像您想象的那么困难

    基本上,您只需为分隔符添加2个UIExtField和一个UIImageView

    我建议你看看苹果的TableView编程指南,尤其是

    您有一个与您试图实现的非常相似的代码示例。以下是想法(未经测试的代码):

    希望这有帮助,
    文森特

    我只是做了这样的事。我的解决方案相当特定于我的数据,但总的来说,我是这样做的:

  • 左侧文本是垂直居中的UILabel
  • 右侧为UITableView
  • “123 Fake Street”将进入一个UITableViewCell子类,该子类在内容视图中抛出一个UITextField
  • “My City”和“ST”将进入一个UITableViewCell子类,该子类必须包含UITextField。我实际上做了一个uitextfield子类,它让我可以控制绘制哪些边框(即drawLeftBorder=YES)
  • 您必须决定何时调整大小,但基本上是在右侧添加行,然后在父表视图上调用begin/endUpdates块。确保父表视图实现heightForRowAtIndexPath并基于数据返回正确的值

  • 是的,我在另一个项目中对一些单元格进行了子分类。我担心我必须走这条路,但我希望有人已经做了额外的工作我没有自动调整大小,所以这真的很有帮助。我没有想过使用表视图。如果你需要这样的控制,这是有道理的。我将走另一条路,因为我可以重用来自另一个项目的代码,但是表视图的想法很有趣。感谢您的输入。您如何处理国家,在问题中显示的屏幕截图中,可以单击该国家,并打开另一个ViewController来选择国家。具体来说,用户点击的是按钮、可点击标签、可点击UIView还是…?它是一个UITableView,因此在代理中只需实现
    didSelectRowAtIndexPath
    。你能分享你的想法吗?
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
        static NSString *CellIdentifier = @"ImageOnRightCell";
    
        UITextField*main, *second;
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
            cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
    
            main = [[[UITextField alloc] initWithFrame:CGRectMake(0.0, 0.0, 220.0, 15.0)] autorelease];
            main.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleHeight;
            [cell.contentView addSubview:main];
    
            second = [[[UITextField alloc] initWithFrame:CGRectMake(220.0, 0.0, 220.0, 15.0)] autorelease];
            second.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleHeight;
            [cell.contentView addSubview:second];
    
        }
    
        return cell;
    }