【问题标题】:Return to ViewController other than the ParentViewController on dismissal of ModalViewController在关闭 ModalViewController 时返回到除 ParentViewController 之外的 ViewController
【发布时间】:2013-07-04 21:43:56
【问题描述】:

首先,看看我的故事板的截图:

这是一个声音地图的应用程序。用户可以记录新的现场记录,也可以从库中选择现有的记录并上传。用户必须添加标题/描述等(或在来自库时修改它们)的 ViewController 以模态方式呈现(在右上角)。

如果用户选择取消此操作并删除录音,他将返回录音屏幕,如果他来自那里,否则返回图书馆。如果他选择保存/上传录音,他应该回到图书馆,那里会显示上传进度。

我如何才能独立于我来自的 ParentViewController 返回到所需的 ViewController?

我考虑过 unwindSegue,但这不适用于我的布局。然后我想出了一个肮脏的解决方法,我更改了 TabBarController 的选定选项卡。但是我也想正确设置委托以传递一些数据。

欢迎提出任何想法!

【问题讨论】:

    标签: ios delegates hierarchy uistoryboard uistoryboardsegue


    【解决方案1】:

    我不认为更改标签栏控制器的 selectedIndex 是一种“肮脏的解决方法”——根据您的设置,这就是这样做的方法。您似乎希望 EntryViewController (Library) 成为 EntryDetailViewController 的代表。如果是这样,您可以在 EntryDetailViewcontroller 的 viewDidLoad 方法中设置委托,如下所示:

    #import "DetailViewController.h"
    #import "TableController.h"
    
    @interface DetailViewController ()
    @property (strong,nonatomic) UITabBarController *tbc;
    @end
    
    @implementation DetailViewController
    
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        self.tbc = (UITabBarController *)self.presentingViewController;
        self.delegate = (TableController *)[(UINavigationController *)self.tbc.viewControllers[1] topViewController];
    }
    
    
    - (IBAction)saveAndUpload:(UIButton *)sender {
        [self.tbc setSelectedIndex:1];
        [self.delegate saveRecording:@"test recording"];
        [self dismissViewControllerAnimated:YES completion:nil];
    }
    
    
    - (IBAction)delete:(UIButton *)sender {
        [self dismissViewControllerAnimated:YES completion:nil];
    }
    

    在我的示例中,我只有两个按钮可以保存或取消,我的 TableController 将与您的库控制器相同。

    【讨论】:

    • 谢谢,现在工作正常!标签栏选择对我来说似乎是……硬编码。多亏了你,现在一切都变得更加清晰了!正如您所建议的,EntryViewController 现在是 EntryDetailViewController 的代表,我可以从我来自的任何一种方式(通过展开 segue)将其关闭。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    相关资源
    最近更新 更多