我不知道确切原因,但我猜它与正在使用的容器视图控制器有关。我实际上使用了几个容器,一个用于SWRevealViewController
,其后端控件包含通用UIViewController
,前端控件包含UINavigationController
。此导航控制器的根视图控制器是另一个容器视图控制器,MainViewController,其中包含UIPageViewController
。页面视图控制器有3 UITableViewController
s,当我尝试从那些表视图控制器导航到相关的视图控制器(通过segue),我希望它是一个推送过渡,它进行模态转换,所以什么给出?
我认为这与层次结构有关,但现在它与所有这些视图控制器有点混乱,我想我在某些时候打破了我的大脑。如果知道错误的人可以解释,我真的很感激。
答案 0 :(得分:0)
遇到了同样的问题并试图解决了近2天,最后解决了这个问题。
查看层次结构:
容器视图
解决方案
当想要显示任何控制器而不是呈现控制器本身呈现UINavigationController时,这将解决不发生segue推动动画的问题......
示例代码,希望它有所帮助:
import UIKit
class ViewController: UIViewController {
var loginViewNavigation : UINavigationController!
var singupViewNavigation : UINavigationController!
override func viewDidLoad() {
super.viewDidLoad()
var storyBoard = UIStoryboard(name: "User", bundle: nil)
loginViewNavigation = storyBoard.instantiateViewControllerWithIdentifier("LoginViewNavigation") as! UINavigationController
singupViewNavigation = storyBoard.instantiateViewControllerWithIdentifier("SignupViewNavigation") as! UINavigationController
self.addChildViewController(loginViewNavigation)
self.addChildViewController(singupViewNavigation)
self.view.addSubview(loginViewNavigation.view)
}
}
要观察的是使用要显示的控制器的UINavigationController而不是ViewController
答案 1 :(得分:0)
Thanks for the replies but I got it working without the use of segues and the storyboard, by pushing the view controller in tableView delegate manually, like this:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
PlaceViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"placeViewController"];
vc.place = self.places[indexPath.row];
[self.navigationController pushViewController:vc animated:YES];
}