我有3个不同的按钮,在触摸时呈现与容器相同的UINavigationViewController。 但是,每个按钮代表哪个视图控制器将嵌入容器。
如何通过代码嵌入必要的viewController?
答案 0 :(得分:0)
您应该实施prepareForSegue
方法:
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
id
是你的按钮,它将触发segue。你通过吸毒和故事板进行分段。在此方法中添加if语句,并告诉UIViewController
哪个UIView
加载到容器中。你可以传递这样的数据:
// Get reference to the destination view controller
YourViewController *vc = [segue destinationViewController];
// Pass any objects to the view controller here, like...
[vc setMyObjectHere:object];
的第二段摘录
<强>更新强>
要将容器中的UIView
加载if
语句加载viewWillApper
方法。
此方法在viewDidLoad.
If
语句之前触发,必须检查一些告诉UIView
初始化的属性。您在prepareForSegue.
看起来像这样:
if (self.viewToLoad == 1)
{
self.dynamicView = MyCustonUIViewNumberOne *view = [MyCustonUIViewNumberOne alloc] init];
}
更新2。
或者您可以像在this answer:
中一样动态地执行此操作if (self.viewToLoad == 1)
{
// Replacing with your dimensions
CGRect frame = CGRectMake(x, y, width, height);
MyCustonUIViewNumberOne *dynamicView = [[MyCustonUIViewNumberOne alloc] initWithFrame:frame];
[self.container addSubview: dynamicView];
} else {
// Init other view
}
容器属性:
答案 1 :(得分:0)
您可以使用的标识符将作为storyboardID分配给各种viewController 例如 fisrtVC,SecondVC,thirdVC
取决于按下哪个按钮,只需设置标识符并使用此标识符 你想推动控制器,如
例如
当您按下导航viewController时,只需传递storyboard标识符,例如
声明NSString *标识符;
-(IBAction)firstButtonClicked{
identifier=@"firstVC";
//pass this identifier to your navigationController
}
类似于其他控制器
当您按下导航控制器时,请确保现在传递此标识符,具体取决于您可以在VC上启动控制器的值
ViewDIdApppear上的:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
NSString* viewType = passedIdentifier
UIViewCOntroller* viewController = [storyboard instantiateViewControllerWithIdentifier:viewType];
将此“viewCOntroller加载到ContainerView”