iOS故事板UIViewController切换回&向前

时间:2014-01-07 21:45:59

标签: ios objective-c uiviewcontroller

app storyboard的基本设计如下:

顶级#1    导航控制器 - > View Controller(Front)包含“Show Master”按钮

下一级#2    导航控制器 - > View Controller(Master) - >推 - >查看控制器(详细信息)

当我在模拟器中运行应用程序时,会出现Front View Controller页面。

要求:在“显示主人”按钮上单击,我希望控件专注于主人。完成此处的操作后,可以显示详细信息视图控制器或回摆到前视图控制器。如何从Front.M和Master.M编码。

设置:iOS 6.x,XCode 5.x.    注意:下面的代码存在于Front.M中,但它不起作用,显示黑色的母版页

vwMaster *vc = [[vwMaster alloc] init];
vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:vc animated:YES completion:NULL];

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

看起来你大部分都在那里,但是vwMaster没有与之关联的布局信息。提供此功能的一种方法是创建一个与视图控制器类同名的.xib文件(即vwMaster.xib),并将xib文件的所有者设置为vwMaster。您的现有代码应该可以正常工作。

看起来你正在使用Storyboard,但在这种情况下,你有几个选择:

  1. 最简单的选择。在Storyboard中,按住Ctrl键从前视图控制器中的按钮拖动到主视图控制器。选择模态segue类型。

  2. 通过在它们之间拖动来在Storyboard中的Front和Master视图控制器之间创建一个模态segue,在属性检查器中为segue提供一个标识符(例如“vwMaster”)并在代码中触发segue:

    [self performSegueWithIdentifier:@"vwMaster" sender:self];
    
  3. 为故事板中的身份检查器中的vwMaster视图控制器本身提供一个标识符,并像以前一样呈现:

    vwMaster *vc = (vwMaster *)[self.storyboard instantiateViewControllerWithIdentifier:@"vwMaster"];
    vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentViewController:vc animated:YES completion:NULL];
    
  4. 无论您选择哪种路线,您都可能希望使用委托模式来关闭视图控制器。对于这个以及更多,我建议你阅读相关的苹果文档:

    https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html

答案 1 :(得分:0)

如果你使用navigationcontroller你没有使用push和pop代替呈现viewController?

答案 2 :(得分:0)

谢谢 knellr

我一直在玩不同的流程。我可以通过调用

来转到视图
[self performSegueWithIdentifier:@"name" sender:self] - provided  name'm. 

还有强大的代码处理功能 - 在需要传递数据的情况下

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    //NSLog(@"prepareForSegue: %@", segue.identifier);
    if ([[segue identifier] isEqualToString:@"name"])
    {
    }
}