【问题标题】:How to dismiss parent view from View Controller in Tab Bar Controller?如何从标签栏控制器中的视图控制器中关闭父视图?
【发布时间】:2012-07-27 07:41:06
【问题描述】:

我的应用程序有一个主屏幕 (mainView)。在mainView,我有一个按钮。当用户点击它时,我使用

[self presentViewController:libraryView animated:YES completion:nil]

呈现另一个视图 (libraryView)。然后,在libraryView,我使用

[self.view addSubview:tabBarController.view]

添加一个UITabBarController,它有2个视图控制器:featuredBooksrecentBooks

一切正常。但是当我在featureBooks添加一个按钮来关闭libraryView并返回mainView时,以下方法不起作用

[self dismissViewControllerAnimated: YES completion:nil]
[self.parentViewController dismissViewControllerAnimated: YES completion:nil]
[self.presentingViewController dismissViewControllerAnimated: YES completion:nil]

我知道原因:self 指的是featureBooks 的观点,而不是libraryView

那么,我如何引用libraryView,将其关闭并从标签栏控制器内的视图控制器(featureBooksrecentBooks)返回到mainView

非常感谢。

【问题讨论】:

    标签: ios xcode uitabbarcontroller dismiss


    【解决方案1】:

    使mainView委托libraryView的对象...然后当你从libraryView调用委托方法时,mainView会在其代码中调用dismissViewcController方法。

    所以:

    1)创建到libraryView控制器.h代码:

    @protocol LibraryViewDelegate
    
          - (void) LibraryViewDelegate_DismissButtonClicked;
    
    @end
    

    2) 然后在 mainView .h 文件中创建一个属性:

    @property(nonatomic, assign) NSObject<LibraryViewDelegate> *delegate;
    

    并将以下内容放入.m中

    @synthesize delegate;
    

    在 libraryView 对象创建之后和展示它之前将 mainView 分配给这个属性

    3)将以下代码写入mainview .m文件:

    -(void)LibraryViewDelegate_DismissButtonClicked{
          //put here the code for dismissing mainView created modalViewController (libraryView)
    }
    

    4)然后编写调用代码:

    [self.delegate LibraryViewDelegate_DismissButtonClicked];
    

    按下关闭按钮时进入 libraryView

    【讨论】:

    • 感谢您的回答和示例代码。在询问示例代码后,我搜索并删除了我的评论:P 无论如何,谢谢。但是,我想你可能误解了我的意思。我想从featuredBooks(标签栏控制器的视图控制器。并且该标签栏控制器是libraryView 的子视图)中解雇libraryView。我试过你的代码,但它没有按我想要的方式工作。再次感谢您的代码。
    • 终于,我成功了。我不再使用 Interface Builder,而是以编程方式创建 Tab Bar Controller、View Controller。现在委托工作正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多