OStack程序员社区-中国程序员成长平台

标题: ios - 用户执行操作后切换到不同选项卡中的 View Controller [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 02:22
标题: ios - 用户执行操作后切换到不同选项卡中的 View Controller

我正在处理的应用程序中有以下 Storyboard :

View of my storyboard

在根目录下,我有一个标签栏 Controller 。它链接到两个 View Controller 。

第一个显示用户上传图片的新闻源的 View Controller ( Storyboard底部的那个)。

第二个 View Controller 用于启动拍照并附加一些数据。在最后一步(右上角)中,当触摸导航栏右侧项目中的“保存”时,我希望用户被重定向到新闻源 View Controller ,并传递一些数据。

我尝试使用 segue,它可以工作。数据被传递到新闻源,但选择了错误的选项卡。我使用

更改了选定的选项卡
[self.tabBarController setSelectedIndex:0];

但是再次点击第二个标签,事情就搞砸了。我可以看到新闻源而不是拍照屏幕。如果我再次点击,它会崩溃。

在某些时候,我认为我可能得到了错误的 Storyboard,应该在我的新闻源中实现一个 TabBar 并将拍照作为模态视图处理。

您知道实现此目的的任何干净方法吗?

谢谢



Best Answer-推荐答案


您不应该使用普通的转场,它将目标 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/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4