按下TableViewCell时打开新的VC

时间:2019-03-15 04:03:22

标签: ios swift uitableview

我将尽力解释这一点,所以请多多包涵。

我有一个用单元格填充的表格视图,我试图这样做,因此当按下tableViewCell时,它将打开一个VC,其中包含该单元格描述的对象的详细信息。我以为我可以使用它,但是我注意到,如果您使用tableView回到新的VC并返回页面,然后按另一个单元格,它会像进入新页面一样进行转换,但是仍然会以表格视图显示页面,直到您触摸屏幕(任何地方)

有人告诉我,在函数内初始化一个新的VC并不是一个好主意,因为这可能会增加内存使用量,但是每当我尝试在其他任何地方初始化它时,我都会发现错误。我真的被卡住了。

请注意,我之所以不使用xCode提供的内置segue函数,是因为这是一个自定义动画,因此任何不使用自定义动画的解决方案都将无效。

几乎可以正常工作的东西让人非常沮丧,但是随后很少有细节打破它。任何建议表示赞赏,谢谢(下面的代码)

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let exerciseDetailsVC = storyboard?.instantiateViewController(withIdentifier: "ExerciseDetailsVC") as! ExerciseDetailsVC
    exerciseDetailsVC.exerciseIndex = indexPath.row
    presentDetail(exerciseDetailsVC)
}

编辑:请求的presentDetail函数

 func presentDetail (_ viewControllerToPresent: UIViewController){
    let transition = CATransition()
    transition.duration = 0.2
    transition.type = CATransitionType.push
    transition.subtype = CATransitionSubtype.fromRight

    self.view.window?.layer.add(transition, forKey: kCATransition)

    present(viewControllerToPresent, animated: false, completion: nil)
}

1 个答案:

答案 0 :(得分:0)

问题是,xCode当前存在一个错误,该错误会导致任何没有选择类型的tableViewCell冻结其动画。它需要执行另一个操作(任何操作,包括摇动手机)才能冻结。找到了解决方案,并在此处进行了详细说明。抱歉,我无法对此进行充分解释。

presentViewController:animated:YES view will not appear until user taps again