Jos*_*ose 52 objective-c storyboard uinavigationcontroller ios swift
在我的MainStoryBoard中,我想将viewController推送到detailView,但是我收到此错误:
NSInvalidArgumentException',原因:'不支持推送导航控制器'
我在故事板上为viewController设置了标识符'JSA'ID.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row == 0) {
SWSJSAViewController *viewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"JSA"];
[self.navigationController pushViewController:viewController animated:YES];
}
}
Run Code Online (Sandbox Code Playgroud)
Hex*_*ire 24
当您谈到推送导航控制器时,您很可能想要呈现它.
这是最常见的方式,这是您在大多数情况下想要做的事情.UINavigationController无法推送,只能使用新的根视图控制器.
MyViewController* vc = [[MyViewController alloc]
initWithNibName:@"MyController" bundle:nil];
UINavigationController *myNav = [[UINavigationController alloc] initWithRootViewController: vc];
[self presentViewController:myNav animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
你在这里做的是首先创建一个UINavigationController然后设置必要UIViewController的根控制器.
如果您有ViewControllers层次结构,并且需要推送包含导航控制器的视图控制器,则步骤如下:
1)推送ViewController,包含UINavigationController.
要推送 UINavigationController,首先要创建一个子类UIViewController,它将是您UINavigationController及其内容的包装器/容器类.
ContainerViewController* vc = [[ContainerViewController alloc] init];
Run Code Online (Sandbox Code Playgroud)
2)将UINavigationController添加为子视图控制器
在viewDidLoad您的容器中(您刚刚实例化)只需添加如下内容:
Objective-C的
UINavigationController* myNav = [[UINavigationController alloc] initWithRootViewController: rootViewController];
[myNav willMoveToParentViewController:self];
myNav.view.frame = self.view.frame; //Set a frame or constraints
[self.view addSubview:myNav.view];
[self addChildViewController: myNav];
[myNav didMoveToParentViewController:self];
Run Code Online (Sandbox Code Playgroud)
Swift 4.2+
let childNavigation = UINavigationController(rootViewController: viewController)
childNavigation.willMove(toParent: self)
addChild(childNavigation)
childNavigation.view.frame = view.frame
view.addSubview(childNavigation.view)
childNavigation.didMove(toParent: self)
Run Code Online (Sandbox Code Playgroud)
你在这里做的基本上是实例化导航控制器并将其作为子控制器添加到你的包装器.而已.您已成功推送 UINavigationController.
| 归档时间: |
|
| 查看次数: |
51319 次 |
| 最近记录: |