【问题标题】:Adding table cell for each record in a uitableview?为uitableview中的每条记录添加表格单元格?
【发布时间】:2010-06-04 10:05:29
【问题描述】:
  ---------------
+ | add record  |
  ---------------

当他们点击单元格时,他们会被推送到一个新屏幕上,并在其中填写一些文本视图(可能嵌入在 tableview 的单元格中)

  ---------------
  | (name)      |
  ---------------
  | (phone num) |
  ---------------

然后当他们返回时,他们可以看到新记录以及“添加记录”单元格。

  ---------------
  | record  1   |
  ---------------
+ | add record  |
  ---------------

(当他们再次进入记录 1 时会有一个删除按钮)

是否有任何示例代码或库可以实现这一目标?

【问题讨论】:

  • 您总是可以使用 ADC 网站上的 tableView 示例,但是您尝试过吗?这通常是了解事物如何运作的最佳方式...... :)

标签: iphone objective-c uitableview uinavigationcontroller


【解决方案1】:

恕我直言,任务很简单。您不需要任何代码示例。 您只需要了解 UITableView 数据源的工作原理以及 UINavigationView 的工作原理。

阅读这 2 个指南:

实现这个功能应该就足够了。

简而言之,您应该使用“添加记录”单元格将UITableView 推入UINavigationController 堆栈。在此单元格的选择事件中,您应该推送另一个 UITableView 或您的自定义视图。当用户按下“完成”按钮时 - 您应该将更改的数据保存到模型中并从 UINavigationController 堆栈中拉出当前视图。之后,您应该告诉您的第一个 UITableView 模型已更改,它将再次读取。

回复评论 你应该设计你的数据结构。例如。您的模型将是 MyRecord 对象的 NSMutableArray。所以你签到tableView:cellForRowAtIndexPath:

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

UITableViewCell *cell = [tableView 
dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] 
        initWithStyle:UITableViewCellStyleDefault 
        reuseIdentifier:CellIdentifier] 
        autorelease];
}
if[recordsArray count] > 0 {
    // you have some records
    if(indexPath.row < [recordsArray count]) {
       MyRecord *record = [recordsArray objectAtIndex:indexPath.row];
       cell.textLabel.text = record.name;
    } else {
       // last cell is Add Record
       cell.textLabel.text = @"Add Record";
    }
} else {
cell.textLabel.text = @"Add Record";
}   
return cell;
}

这只是一个想法。它可以包含一些愚蠢的东西(比如2个硬编码@“添加记录”),但想法应该很清楚

【讨论】:

  • 谢谢。我熟悉推送视图和 uitableviews 等,但我不清楚如何保存并将数据从第二个表传回我的初始表....?
  • 谢谢。这条记录如何从第二个表传递到第一个表?我想我理解它将如何从第一个视图传递到第二个视图(在第二个视图中为数据创建属性,然后在推入第二个视图之前在第一个视图控制器中设置它们)....但我不确定如何将数据从第二个视图传递到第一个视图。
  • 如果属性是“保留”类型(不是复制),那么在第二视图中所做的所有更改都将在第一视图中可用,因为它将是同一个对象。有几种方法可以做到这一点。 @property (retain,nonatomic) 就是其中之一。
猜你喜欢
  • 1970-01-01
  • 2011-10-17
  • 2014-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-27
  • 2016-10-16
相关资源
最近更新 更多