0

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

故事板布局

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

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

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

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

欢迎任何想法!

4

1 回答 1

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 将与您的库控制器相同。

于 2013-07-05T05:34:46.870 回答