从 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 会导致调整弹出框的大小