2011-10-30 46 views
2

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

  1. 左侧(如UITableViewCellStyleValue2)文本
  2. 灰线分隔左右
  3. 内容右手在自定义格式 - 根据我想要在这里展示的不同高度,我将有不同的格式。

任何示例代码,苹果示例(虽然我找不到),教程或一般指导非常感谢。我试图避免必须创建一个自定义容器类来处理左侧的所有内容,并根据我想要放在正确的内容动态调整大小。当然有人已经这样做了,对吗? :)

编辑模式是这样的:Contacts Address Edit

+0

你能分解你的想法吗? – user501836

回答

4

你必须创建自己的UITableVIewCellSubclass,这并不像你想象的那么难。

基本上你只需要在分隔符之间添加2个UITextField和一个UIImageView。

我建议你看看苹果的TableView编程指南,特别是A Closer Look at Table-View Cells

你有一个代码示例非常相似,你想达到的目标。这里是思想(未测试的代码):

- (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; 
} 

希望这有助于 文森特

+0

是的,我在另一个项目中划分了许多单元格。我担心我不得不在这里走这条路,但希望有人能够完成额外的工作。 ;)我没有做过自动调整大小,所以这真的很有帮助。 – thephatp

+0

不适合我。 –

1

我只是做了这样的事情。我的解决方案是相当具体到我的数据,但一般来说这是我做的:

  1. 左手侧的文本是垂直居中的UILabel
  2. 右手边是一个UITableView
  3. “123伪造街“会进入UITableViewCell子类,该子类将UITextField引入内容视图。
  4. “我的城市”和“ST”会进入一个单独的UITableViewCell子类,它必须引入UITextField。我实际上做了一个UITextFieldSubclass,它可以控制要绘制哪些边界(即drawLeftBorder = YES)。
  5. 您必须决定何时调整大小,但基本上在右侧添加行,然后在父级表视图上调用begin/endUpdates块。确保父级表视图实现了heightForRowAtIndexPath,并根据数据返回正确的值。
+0

我没有想过使用表格视图。如果你需要这种精细的控制,这是有意义的。我要去其他路由,因为我可以重用另一个项目的代码,但表格视图的想法很有趣。感谢您的意见。 – thephatp

+0

您如何处理问题中显示的屏幕截图中可点击的国家,并调出另一个ViewController来选择国家/地区。具体来说,是用户点击一个按钮,点击标签,可点击的UIView或...? –

+0

这是一个UITableView,所以在委托中只实现'didSelectRowAtIndexPath'。 – sosborn

相关问题