iOS:在viewDidLoad上的预选行上添加复选标记

时间:2014-07-17 20:37:11

标签: ios objective-c uitableview

我在iOS7上使用Xcode 5.1。在我的应用程序中,我有一个静态的uitableview由几个部分组成,每个部分有2-3行。我使用静态表,因为我的设置视图控制器和内容不会改变。

在一个这样的部分我有2行。每行在右侧都有一个标签,类似于iPhone的General - >自动锁定行。

与自动锁定行类似,当用户选择行时,它会分割到由多行组成的另一个tableview控制器。每当用户在此处选择一行时,我都会显示一个复选标记。当用户退出此vc时,我会在行的右侧标签中显示其选择的名称,再次就像自动锁定示例一样。

我使用展开segue将选定的值传回(从细节到主人,你可以说)所以我知道用户选择了什么,以及我如何设置标签中的值#s坐在排。

我想要做的是能够使用用户选择的最后一个值检查详细的tableview行(再次,就像自动锁定示例一样)。我知道他们选择的名字,因为我在prepareForSegue发送了它。我不知道如何告诉tableview哪一行放置复选标记,因为详细信息表与主表没有任何连接,发送' indexPath.row'不会工作。因为我有少量行,所以我可以检查每一行,看看它的文本是否与我发送的文本相同。不过,我不确定这是否是最佳方式,因为我希望允许用户在以后的版本中在这些标签中输入自己的文字。我很欣赏任何想法。谢谢!

编辑:我应该更好地澄清我的问题以及我正在寻找的帮助。我在Settings表中有2行,它们都转换为详细信息表。此详细信息表包含多行静态数据。当用户从此详细信息表中选择一行时,我不知道Settings表中的哪一行正在发出请求;我只是通过一个放松的segue将标签放回到行上。因此,我需要能够在' viewDidLoad'上查找数据的值(从“设置”表中发送)。细节表。我很抱歉从一开始就不清楚这一点。

1 个答案:

答案 0 :(得分:0)

我只需在NSUserDefaults键下记录行(或部分,如果需要)。在viewDidAppear中,您可以设置复选标记。

这无论如何都适用。如果您允许编辑,例如删除行,则可以动态调整此设置。同样,更改标签的文本也无关紧要。

- (void)tableView:(UITableView *)tableView 
  didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

  ...
  if (indexPath.section == kTrackedSection) {
      NSInteger selectedRow = [[NSUserDefaults standardUserDefaults] integerForKey:kSetting];
      if (selectedRow == indexPath.row) { return; }
      UITableViewCell *otherCell = [tableView cellForRowAtIndexPath:indexPath];
      otherCell.accessoryType = UITableViewCellAccessoryNone;

      [[NSUserDefaults standardUserDefaults] setInteger:indexPath.row ForKey:kSetting];
      cell.accessoryType = UITableViewCellAccessoryCheckmark;
  }
}