ios - ViewController Hierarchy - 从堆栈中移除 UISplitviewController

标签 ios objective-c iphone uiviewcontroller uisplitviewcontroller

我的应用有登录 View 、加载 View 、 Split View和菜单 View 。

view flow

启动时,初始 View 是登录 View 。当用户成功登录时,它会进入加载 View 。加载数据后,我会显示 Split View。在 Split View中,我有一个模态显示的菜单。菜单的选项之一是注销。当用户注销时,我想返回到登录 View 。到目前为止,还不错。

问题是,当我检查 View 层次结构时, Split View仍在登录 View 下方。理论上,用户可以通过这种方式创建具有无限数量的分层 View 的情况。

stacked views

如何让用户返回登录 View 并关闭 Split View?

我正在使用 Storyboard和 segues 来获得 Split View。登录 View 推送到加载 View ,加载 View 推送到 Split View。我在自定义模态呈现 Controller 中呈现模态菜单。

最佳答案

            //VC1


            -(IBAction)button_click:(id)sender
            {
                UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
                ViewController2 *viewController2 = [storyboard instantiateViewControllerWithIdentifier:@"VC2"];

                [self.navigationController pushViewController:viewController2 animated:YES];
            }


            //VC2


            -(IBAction)button_click:(id)sender
            {

                UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
                ViewController3 *viewController3 = [storyboard instantiateViewControllerWithIdentifier:@"VC3"];

                [self.navigationController pushViewController:viewController3 animated:YES];

            }

            //VC3
    // In .h file
    @interface ViewController3 : UIViewController<ViewController4Delegate>

    -(IBAction)button_click:(id)sender;

    @end

         //In .m file   
            -(IBAction)button_click:(id)sender
            {
                UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
                ViewController4 *viewController4 = [storyboard instantiateViewControllerWithIdentifier:@"VC4"];

                viewController4.delegate=self;

                [self.navigationController presentViewController:viewController4 animated:YES completion:nil];
            }

            -(void)completed
            {
                [self.navigationController popToRootViewControllerAnimated:YES];
[self.parentViewController.parentViewController dismissViewControllerAnimated:YES completion:nil];
            }

            //VC4
            //In .h file
            @protocol  ViewController4Delegate

        -(void)completed;

        @end

        @interface ViewController4 : UIViewController

        -(IBAction)button_click:(id)sender;

        @property(nonatomic,weak) id <ViewController4Delegate> delegate

         //In.m file
            -(IBAction)button_click:(id)sender
            {


                [self dismissViewControllerAnimated:NO completion:^{

                    if(delegate)
                    {
                        [delegate completed];
                    }

                }];
            }

关于ios - ViewController Hierarchy - 从堆栈中移除 UISplitviewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28286477/

相关文章:

iphone - 初学者 : Multiview app doesn't switch views correctly

iphone - NSUserDefaults 记住 View

ios - 将数据 append 到 Swift 3 中的 txt 文件

ios - 在 ViewController 之间传输相同的对象

objective-c - 像 iOS 邮件应用程序一样缩放 UIWebView

iphone - glDrawElements VAO/VBO 在 iOS 上崩溃

ios - 使用大小类更改字体大小

ios - 自动布局的 UIScrollview 滚动问题

ios - 如何使用 MapKit 和 Swift 查找固定项目的位置

iphone - 在 Xcode 4 下构建 PhoneGap 时出现 undefined symbol 错误?