我知道這有點遲,但有人可能會在某個時候找到答案。
馬克斯的答案通常是一個很好的答案。然而,原始海報的問題有點含糊。他/她沒有指定是否需要在中央視圖控制器或左側視圖中進行轉換。
假設過渡是在左視圖控制器:
如果你想推過渡,你可以使用如下代碼:
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == 0) {
UINavigationController * nc = (UINavigationController *)self.viewDeckController.leftController;
UIViewController * vc = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"yourView"]; // use the name of the view (not the navigation view controller)
[nc pushViewController:vc animated:YES];
}
}
如果你想模態過渡,只需用以下代碼替換之前if語句子句中的代碼:
UIViewController * vc = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"yourViewName"]; // don't use the name of a navigation controller
UINavigationController * nc = [[UINavigationController alloc] initWithRootViewController:vc];
[self presentViewController:nc animated:YES completion:nil];
此代碼中的導航控制器用於顯示導航欄。如果您不需要導航欄,只需省略導航控制器定義,然後將視圖控制器作爲參數傳遞給presentViewController: animated: completion:
方法。
假定過渡是在中心視圖控制器:
可以使用麥克斯提供的代碼。請記住,他表現出新的視圖控制器的方法是通過更換現有中心視圖控制器。新的視圖控制器是既不推動也不模式地顯示。如果你想推新視圖控制器到現有的中心視圖控制器,你應該使用我介紹的代碼前兩件以上的過渡的方式相同。因此,它應該是這樣的:
推轉型:(下面的代碼應在第一段代碼if語句子句中替換代碼)
[self.viewDeckController closeLeftView];
UINavigationController * nc = (UINavigationController *)self.viewDeckController.centerController;
[nc pushViewController:[[[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"yourViewName"] parentViewController] animated:YES];
莫代爾介紹:(下面的代碼應更換if語句子句中的代碼中的第一塊代碼)
[self.viewDeckController closeLeftView];
UINavigationController * center = (UINavigationController *)self.viewDeckController.centerController;
UIViewController * vc = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"yourViewName"];
UINavigationController * nc = [[UINavigationController alloc] initWithRootViewController:vc];
[center presentViewController:nc animated:YES completion:nil];