关闭 tableView 上的 UITableViewController:didSelectRowAtIndexPath:indexPath

Posted

技术标签:

【中文标题】关闭 tableView 上的 UITableViewController:didSelectRowAtIndexPath:indexPath【英文标题】:Dismiss UITableViewController on tableView:didSelectRowAtIndexPath:indexPath 【发布时间】:2013-06-26 17:33:50 【问题描述】:

目前我有一个 UIView,其中添加了一个 UItableview 单元格到子视图中,就像这样,

当按钮被按下时,它会推送到另一个导航控制器,其子类是 uitableviewcontroller....

因此,当用户单击其中一个 tableviewcells 时...我希望视图控制器从导航堆栈中弹出并返回到首先列出的上一个视图。

我用下面的实现实现了下面列出的 UITableviewcontroller 方法....但是什么也没发生:P....

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

    [self dismissViewControllerAnimated:YES completion:nil];

有什么想法吗?

【问题讨论】:

【参考方案1】:

如果您将视图控制器推送到导航控制器的堆栈上,即pushViewController:animated:,您应该使用popViewControllerAnimated: 方法弹出当前视图控制器。

如果你想转到一个视图控制器,而不仅仅是当前视图控制器(或UINavigationController 行话中的顶视图控制器)的下一级,你可以使用popToViewController:animated:。要转到导航控制器的根视图控制器,请使用popToRootViewControllerAnimated:

但是如果您以模态方式呈现视图控制器,即presentViewController:animated:completion:,那么只有您使用dismissViewControllerAnimated:completion: 方法来关闭呈现的视图并转到呈现视图控制器。

【讨论】:

还有一个问题....如何获取 cell.textlabel.text 的值并将其传递回单个单元格所在的第一个视图控制器?我想用推送的 viewcontroller 的 tableviewcell 中选定单元格的文本更新第一个视图的单元格... 使用委托。创建一个协议并使呈现的视图控制器符合它。然后在tableView:didSelectRowAtIndexPath: 上,向代表发送所需的字符串或您想要的任何消息。这是最好的方法。 objective-c 编程有点新……你认为你可以举一个小例子来说明你的意思吗? :/对不起,我是一个完整的新手:P

以上是关于关闭 tableView 上的 UITableViewController:didSelectRowAtIndexPath:indexPath的主要内容,如果未能解决你的问题,请参考以下文章

一个额外的 UITableViewCellContentView 覆盖出现在 iOS 14 上的 TableView 中,防止点击,但在 iOS 13 上工作正常

带有数组信息的 UIViewController 上的 TableView [关闭]

像appStore上的tableView实现[关闭]

关闭 tableView 上的 UITableViewController:didSelectRowAtIndexPath:indexPath

展开和折叠 tableview 单元格

tableView didSelectRowAtIndexPath 无法正常工作