ios-如何向项目添加导航控制器?

时间:2014-02-05 05:39:24

标签: ios objective-c uinavigationcontroller appdelegate

我有一个项目,我在维护导航控制器(我通过界面构建​​器添加)时遇到了问题。我想建立一个层次结构,因为它说视图没有添加到窗口层次结构中。我可以使用performSegueWithIdentifier在一个视图之间移动,但第二次使用它不起作用。问题是它不允许我从一个视图移动到另一个视图。我已经阅读了关于搞乱appdelegate或添加performForSegue的内容,但我不知道如何使用它。

如果我有三个视图连接的任何建议,如1 - > 2 - > 3? 1和2将具有performSegueWithIdentifier。

拜托,谢谢!

这是我的故事板: http://s1370.photobucket.com/user/sean_cleveland1/media/Untitled_zpsc9022523.png.html?o=0

这是我的performSegueWithIdentifier函数:

//Used in FirstVC.
[self performSegueWithIdentifier: @"firstToSecond" sender: self];
//Used in SecondVC... this doesn't work!
[self performSegueWithIdentifier: @"secondToThird" sender: self];

3 个答案:

答案 0 :(得分:2)

Your StoryBoard

只需控制+从“弹出到主屏幕” UIButton拖动到退出(场景底部的绿色按钮) 选择在第一个屏幕中声明的标题为“Main”的展开方法 e.g。

-(IBAction)customUnwind:(UIStoryboardSegue *)sender
{

NSLog(@"Unwind successful");

}

答案 1 :(得分:1)

首先定义您的第三个视图标识符

enter image description here

- (void)segue
{

    [self performSegueWithIdentifier:@"mySegue" sender:self];

}

仅对任何条件或操作使用以下方法

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    if([[segue identifier] isEqualToString:@"mySegue"]) {


    }
}

我为你创建了简单的示例项目

https://github.com/iDevAndroid/NavigationSample

enter image description here

试试这个。因为你在下一行之后执行模型交易你正在使用解雇模型。

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{



    [self becomeFirstResponder];
        [self dismissViewControllerAnimated:YES completion:^{
[self emailDelivaryedSuccessfully];
];

}



-(void)emailDelivaryedSuccessfully{


        [self performSegueWithIdentifier: @"secondToThird" sender: self];
}

答案 2 :(得分:0)

如果您在Storyboard中执行此操作,则无需使用performSegueWithIdentifier:,只需在代码中注明代码performSegueWithIdentifier:prepareForSegue:并尝试使用。 如果您使用的是performSegueWithIdentifier:,那么您还需要实施prepareForSegue:方法。 恩。

[self performSegueWithIdentifier: @"firstToSecond" sender: self];

// prepareforsegue method

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    if([[segue identifier] isEqualToString:@"firstToSecond"]) {

        SecondViewController *destinationController = [segue destinationViewController];
       //set data if any
    }
}