这对我来说似乎很有用,但我遇到了问题。我只是想在点击某个静态单元格时转换到另一个tableviewcontroller。
我从单元格控制点击到新的tableviewcontroller,没有问题 - 创建了segue。但是当我运行应用程序时,单击单元格时没有任何反应。弹出这个问题的人有什么问题吗?
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let storyboard : UIStoryboard = UIStoryboard (name: "groups", bundle: nil)
let groupsVC = storyboard.instantiateViewController(withIdentifier: "groups") as! GroupsViewController
if indexPath.section == 1 && indexPath.row == 0 {
self.navigationController?.pushViewController(groupsVC, animated: true)
}
答案 0 :(得分:1)
如果您在UITableViewController
中创建的静态单元格不在UIViewController
且UITableView
之上,则可以在UIStoryboard
内对另一个控制器执行segue。< / p>
如果您使用push segue,请确保UITableViewController
嵌入UINavigationController
。
答案 1 :(得分:0)
您需要在tableViewController中实现委托方法:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Handle your tap to the cell here
UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
YourViewControllerToPush *vc= [storyboard instantiateViewControllerWithIdentifier:@"YourViewControllerStoryboardIdentifier"];
[self.navigationController pushViewController:vc animated:YES];
// Or to present it [self presentViewController:vc animated:YES completion:nil];
}
编辑: 您还可以使用segue标识符方法as described here: 但是,您需要在上述委托中调用该操作。
[self performSegueWithIdentifier:@"MySegue" sender:sender];
夫特:
答案 2 :(得分:0)
我遵循了Aragunz的解决方案,该解决方案最初没有工作......几个小时后我发现我在TableView上设置了tapGestureRecognizer,以便在点击时解除键盘。
这与静态单元格上设置的segue相冲突。我评论了tapGesture相关代码,一切正常
// let tapGesture = UITapGestureRecognizer(target: self, action: #selector(SettingsTableViewController.hideKeyboard))
// tapGesture.cancelsTouchesInView = true
// settingsTableView.addGestureRecognizer(tapGesture)
我必须找到解除键盘的另一种解决方案:D