首先,看一下我的故事板的截图:
它是声音地图的应用程序。用户可以记录新的现场记录或从库中选择现有记录并上传它们。用户必须添加标题/描述等(或从库中修改它们)的ViewController以模态方式呈现(在右上角)。
如果用户选择取消该录音并删除录音,他将返回录音屏幕,如果他来自那里,则应返回图书馆。如果他选择保存/上传录音,他将返回图书馆,在那里将显示上传进度。
如何独立于我来自的ParentViewController返回所需的ViewController?
我想到了unwindSegue,但这对我的布局不起作用。然后我想出了一个肮脏的解决方法,我更改了TabBarController的选定选项卡。但是我还想正确设置委托以传递一些数据。
欢迎任何想法!
答案 0 :(得分: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与你的图书馆控制器相同。