表视图 - 单击“如果语句”

时间:2011-07-21 18:26:40

标签: iphone objective-c xcode

所有

我有一个表格视图,当我用字符串X和字符串Y点击单元格时,我需要做出不同的反应.X会带你到X View(XViewController),Y会带你到Y View(YViewController)等等。插入此if语句的最佳位置在哪里,如何将其转换为正确的视图?

由于

2 个答案:

答案 0 :(得分:5)

您想要实施

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

然后,您可以访问相关单元格以读取字符串并显示相应的视图控制器。

例如:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell * cell = [tableView cellForRowAtIndexPath:indexPath];
    if ([cell.text isEqualToString:stringX]) {
        XViewController *xvc = [[XViewController alloc] init];
        [self presentModalViewController:xvc animated:YES];
        [xvc release];
    } else {
        YViewController *yvc = [[YViewController alloc] init];
        [self presentModalViewController:yvc animated:YES];
        [yvc release];
}

然后,在推送任何viewController时,您可以使用

将其关闭
[self dismissModalViewControllerAnimated:YES];

答案 1 :(得分:2)

方法:

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

你会在哪里做到这一点。然后,您将从该索引路径中获取单元格:

UITableViewCell * cell = [tableView cellForRowAtIndexPath:indexPath];

最后,检查字符串。代码应如下所示:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;{
  UITableViewCell * cell = [tableView cellForRowAtIndexPath:indexPath];

  if([cell.text isEqualToString:X]){
    // load view X and push onto the view controller
  }
  else{
    // load view Y and push onto the view controller
  }
}

如果使用自定义单元格,只需查看自定义属性而不是.text。

你应该看看这里:

Apple Navigation Controller Reference

这很简单。只需分配新的视图控制器,然后将其推送到导航控制器:

NewViewController * newView = [[NewViewController alloc] init];
[self.navigationController pushViewController:newView animated:YES];
[newView release];