从最初的 View Controller 如何将 acriss 转移到 UITabBarController 并使用 prepareForSegue

Posted

技术标签:

【中文标题】从最初的 View Controller 如何将 acriss 转移到 UITabBarController 并使用 prepareForSegue【英文标题】:From initial View Controller how to segue acriss to a UITabBarController and use prepareForSegue 【发布时间】:2013-12-02 16:06:34 【问题描述】:

设置如下:

1) 单视图控制器 - 初始 Cobntroller = 带有按钮。

2) 带有 1 个视图控制器 - 标签的标签栏控制器控制器

当我按下按钮时,它会转到选项卡视图。

现在我想使用 prepareForSegue 传递一个字符串来更新标签栏控制器内的 1 个视图控制器的标签。

当我这样做时,我得到一个

“无法识别的选择器发送到实例”。

所以我转至选项卡视图控制器。

但是我无法在 Tab 中引用 ViewController。

我该如何解决这个问题?

【问题讨论】:

发布完整的错误信息。 【参考方案1】:

问题是您不能从单个视图切换到 TabBarController。相反,使用这样的代码:

- (IBAction)setupTapped:(id)sender 
    static NSString *tabViewControllerIdentifier = @"SetupViewController";  


    UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:tabViewControllerIdentifier];
    AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];

    UIViewController *currentController = app.window.rootViewController;
    app.window.rootViewController = controller;
    app.window.rootViewController = currentController;

    [UIView transitionWithView:self.navigationController.view.window
                      duration:0.75
                       options:UIViewAnimationOptionTransitionFlipFromRight
                    animations:^
                        app.window.rootViewController = controller;
                    
                    completion:nil];

这将在控制器之间转换。您可以更改动画类型以适合您的目的。这是使用选项参数设置的;当前显示 UIViewAnimationOptionTransitionFlipFromRight。

“SetupViewController”是为 TabViewController 输入到身份检查器(右起第三个图标)中的 Storyboard ID(不带引号)。您可以更改它以匹配您输入的内容。

【讨论】:

什么是 tabViewControllerIdentifier ?我假设那是位于我的 TabViewController 内的“视图控制器”?对于这个视图,我给了它一个名为“TabViewController”的控制器此代码生成以下错误“不包含标识符为“TabViewController”的视图控制器。 在情节提要中,当您单击 ViewController 时,身份检查器(左起第三个图标)有一个称为情节提要 ID 的字段。这是要使用的标识符。在上面的示例中,tabViewController 的 Storyboard ID 为“SetupViewController”(不带引号)。 谢谢。但是,如果我没有将标识符“SetupViewController”放在我的初始视图控制器中,那么我会收到错误“不包含具有标识符 SetupViewController 的视图控制器”。如果我在初始视图控制器中更新 StoryBoard ID,则应用程序不会崩溃,但当我按下按钮时没有任何反应。 为此,您必须在 TabViewController 的 StoryBoard ID 中添加一些内容,初始 ViewController 的故事板 ID 是可选的。完成此操作后,将方法中的“SetupViewController”替换为您提供给 tabViewController 的 ID 好的,所以经过更多测试后,我发现这非常适合单视图控制器到另一个单视图控制器之间的转换。但是,当转到选项卡视图控制器时它不起作用。

以上是关于从最初的 View Controller 如何将 acriss 转移到 UITabBarController 并使用 prepareForSegue的主要内容,如果未能解决你的问题,请参考以下文章

如何将 CloudKit 记录数据从“TableView-Controller B”传递到“View-Controller C”?

如何使用 ajax get 将数据从 View 传递到 Controller 或使用参数在 mvc 中发布

如何使用Swift 4将数据从Pop-Over子视图传递到View Controller

使用委托将数据从 Collection View Controller 传递到 View Controller

使用委托将数据从Collection View Controller传递到View Controller

如何从自定义 UICollectionViewCell 启动 View Controller