UITabBarController setSelectedViewController 在标签栏控制器的视图控制器列表中只能选择一个视图控制器

UITabBarController setSelectedViewController only a view controller in the tab bar controller's list of view controllers can be selected

我有一个 UITableViewController,例如 NewsfeedController,并且有综合 属性 用于设置/获取。

NewsfeedController* vc = [[NewsfeedController alloc] init];
vc.tagId = 10;
[self.tabBarController setSelectedViewController:vc];

显示错误: [UITabBarController setSelectedViewController:]只能选择选项卡栏控制器的视图控制器列表中的一个视图控制器。'

我在 UITabBarController setSelectedViewController: only a view controller in the tab bar controller's list of view controllers can be selected 中看到,上面写着 "remove the synthesis of the array of view controllers you are passing"。

你能给出完整的代码如何实现吗?我需要的是,我想切换到其他选项卡并传递变量,以便在 NewsfeedController 中可以使用变量。如果我使用 [self.tabBarController setSelectedIndex:0] 它可以更改选项卡,但我如何传递变量并触发刷新/重新初始化视图?

并且如果可能的话,如果使用setSelectedViewController,它是否可以更改为未在所有选项卡控制器项目中列出的视图。 (例如在UITab中的标签是:tab1,tab2,tab3。但我想换成tab4)。

您需要获得对选项卡栏控制器中已有的 NewsFeedController 的引用,而不是创建新实例(这就是您对发布的代码所做的)。您可以从选项卡栏控制器的 viewControllers 属性 获得该引用。因此,例如,如果 NewsFeedController 在第二个选项卡(索引 1 处的选项卡)中,您可以这样做,

NewsfeedController* vc = self.tabBarController.viewControllers[1];