从STATIC tableviewcell看到新的tableviewcontroller

时间:2017-01-29 04:11:17

标签: ios swift uitableview

这对我来说似乎很有用,但我遇到了问题。我只是想在点击某个静态单元格时转换到另一个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)
    }

3 个答案:

答案 0 :(得分:1)

如果您在UITableViewController中创建的静态单元格不在UIViewControllerUITableView之上,则可以在UIStoryboard内对另一个控制器执行segue。< / p>

enter image description here

如果您使用push segue,请确保UITableViewController嵌入UINavigationController

enter image description here

答案 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];

夫特:

Push viewcontroller

didSelectRowAtIndexPath

答案 2 :(得分:0)

我遵循了Aragunz的解决方案,该解决方案最初没有工作......几个小时后我发现我在TableView上设置了tapGestureRecognizer,以便在点击时解除键盘。

这与静态单元格上设置的segue相冲突。我评论了tapGesture相关代码,一切正常

//        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(SettingsTableViewController.hideKeyboard))
//        tapGesture.cancelsTouchesInView = true
//        settingsTableView.addGestureRecognizer(tapGesture)

我必须找到解除键盘的另一种解决方案:D