从 TableViewController 打开新视图

Posted

技术标签:

【中文标题】从 TableViewController 打开新视图【英文标题】:Opening new view from TableViewController 【发布时间】:2015-08-12 08:13:34 【问题描述】:

我有一个包含图像和一些文本的表格视图。这个想法是打开一个带有特定图像和文本的新视图,当用户单击表格视图中的实例时。

我正在考虑通过在表格视图中覆盖单元格的按钮来解决这个问题,但感觉应该有一个更简单的内置解决方案,比如 onCellClick(Any sender) 函数,但我还没有找到它。请帮忙?

【问题讨论】:

【参考方案1】:

是的,有一个简单的解决方案,那就是使用 UITableViewDelegate 方法didSelectRowAtIndexPath

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    NSString *cellText = cell.textLabel.text;
    UIImage *image = cell.imageView.image;

   // here create a new view controller and send these details to your new view controller.
   UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; //Main = your storyboard name
   DisplayDataViewController *displayDataViewController = [storyboard instantiateViewControllerWithIdentifier:@"displayDataViewController"];
  //set data in new view controller before pushing that on top of your navigation controller
  displayDataViewController.imageName = image;
 displayDataViewController.displayStr = cellText;
   [self.navigationController pushViewController:displayDataViewController animated:NO];

【讨论】:

甜蜜 - 谢谢!我知道有一些东西:P。我试试这个! 顺便说一句,我应该在那之后添加一个segue以将其指向正确的视图吗? 您不需要任何转场。您可以简单地启动所需的视图控制器并使用 pushViewController 方法推送它。但是,这假设您的 tableView 控制器嵌入在导航控制器中,如果您要使用 segue,您无论如何都需要它。

以上是关于从 TableViewController 打开新视图的主要内容,如果未能解决你的问题,请参考以下文章

不能只用 tableViewController 获得大标题

当使用在swift 4中使用performSegue打开的dismiss页面时,如何在视图控制器和TableViewController之间传递数据?

在 uipopovercontroller 中推送一个新的 tableViewController 会导致调整弹出框的大小

从 tableviewcontroller 加载 tableviewcontroller 不起作用

从静态单元到动态 TableViewController

从 tableviewcontroller 将数据传递给父 viewcontroller