我正在处理的应用程序中有以下 Storyboard :
在根目录下,我有一个标签栏 Controller 。它链接到两个 View Controller 。
第一个显示用户上传图片的新闻源的 View Controller ( Storyboard底部的那个)。
第二个 View Controller 用于启动拍照并附加一些数据。在最后一步(右上角)中,当触摸导航栏右侧项目中的“保存”时,我希望用户被重定向到新闻源 View Controller ,并传递一些数据。
我尝试使用 segue,它可以工作。数据被传递到新闻源,但选择了错误的选项卡。我使用 更改了选定的选项卡
[self.tabBarController setSelectedIndex:0];
但是再次点击第二个标签,事情就搞砸了。我可以看到新闻源而不是拍照屏幕。如果我再次点击,它会崩溃。
在某些时候,我认为我可能得到了错误的 Storyboard,应该在我的新闻源中实现一个 TabBar 并将拍照作为模态视图处理。
您知道实现此目的的任何干净方法吗?
谢谢
Best Answer-推荐答案 strong>
您不应该使用普通的转场,它将目标 Controller 添加到堆栈中。做你想做的最好的方法应该是使用 unwind segue。这是您需要做的粗略草图:
• 在 NewsfeedController 中声明一个展开转场 Action ,例如 (IBAction)unwindFromPictureSavedUIStoryboardSegue *)segue ;
• 将SavingPictureController 中的“保存”按钮连接到 Storyboard 中的“退出”图标,然后选择之前定义的方法;
• 在新创建的展开 segue 中,使用 SavedPictureSegue ; 之类的内容定义其标识符
• 定义要在SavingPictureController 的 header 中传递的数据,例如@property (strong, readonly, nonatomic) id passData ;
• 在SavingPictureController 中实现
-(void)prepareForSegueUIStoryboardSegue *)segue
{
if ([segue.identifier isEqualToString"SavedPictureSegue"]) {
_passedData = // Your data here
}
}
• 现在,在 NewsfeedController 中实现之前定义的方法并从 (SavingPictureController *)segue.sourceController 获取数据。请务必#import "SavingPictureController.h" 。
关于ios - 用户执行操作后切换到不同选项卡中的 View Controller ,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/26125007/
|