在uitableview中为每条记录添加表格单元格?

时间:2010-06-04 10:05:30

标签: iphone objective-c uitableview uinavigationcontroller

我正在尝试实现一个系统,用户最初在uinavigationview中以uitableview(分组样式)呈现单个tablecell。

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

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

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

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

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

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

是否有任何示例代码或库可以实现此目的?

1 个答案:

答案 0 :(得分:2)

恕我直言的任务很简单。您不需要任何代码示例。 您所需要的只是了解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个硬编码的@“添加记录”),但想法应该是明确的