Popover UITableViewController在mainView上触发操作

时间:2012-01-21 21:56:41

标签: iphone ios ipad ios5

我有一个应用程序,为您提供popOver Tableview控制器。这个popOver有n个单元格。我需要能够在触摸弹出框中的一个表格单元时在主视图上调用一个函数。我该怎么做呢?

一旦细胞被触摸,能够解除弹出窗口会很好....

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

    NSLog(@"Cell check %@", [totalArray objectAtIndex:indexPath.row]);
    [self dismissPopoverAnimated:YES];
}

这里它将打印控制台中单元格中的文本,但我需要能够将该单元格文本传递回主视图...哦是的,并且[自我解雇:无法解决:是]不起作用..

1 个答案:

答案 0 :(得分:3)

解决此问题的传统方法是使“主”视图控制器成为具有表视图的类的委托:

  1. 定义特定于应用程序的委托协议,添加特定于您的用例的委托方法,并更改“主”视图控制器以符合它。委托方法应该使用一个参数,其类型是您要传递给“主”视图控制器的数据(在您的情况下,是UITableViewCell或包含其文本的NSString)。
  2. 使用表视图在类上创建一个属性,其类型为新的委托协议。
  3. 通过将“主”视图控制器设置为具有表视图的类,将其设置为新属性的值。
  4. 调用tableView:didSelectRowAtIndexPath:方法时,在您创建的委托上调用委托方法,将要提供的数据传递给“主”视图控制器。这使您的“主”视图控制器有机会响应在弹出框中选择表格单元格的事实,并且它可以调用您需要的任何功能。
  5. 实际上你可以用更少的代码用块来做同样的事情,但它更高级。我不会在这里进入。

    您也可以使用NSNotificationCenter,但我个人尽量避免使用它,除非绝对必要。