Button在容器中显示一个navigationViewController,其中包含一个不同的嵌入viewContoller

时间:2014-07-23 14:41:46

标签: ios containers viewcontroller

我有3个不同的按钮,在触摸时呈现与容器相同的UINavigationViewController。 但是,每个按钮代表哪个视图控制器将嵌入容器。

如何通过代码嵌入必要的viewController?

2 个答案:

答案 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]; 

取自this answer.

的第二段摘录

<强>更新

要将容器中的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
}

容器属性:

enter image description here

答案 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”