UITabBar 的 Topview 控制器

Posted

技术标签:

【中文标题】UITabBar 的 Topview 控制器【英文标题】:Topview Controller for UITabBar 【发布时间】:2014-10-13 04:02:58 【问题描述】:

我有一个显示父文件夹详细信息的表格视图。当我选择一行时,我希望它显示相应子文件夹的内容,该文件夹有两个使用选项卡栏控制器的窗口 - 一个显示详细信息表,一个显示图表。

问题是我在topviewcontroller for uitabbar 找到的代码无法在选定的索引路径上显示内容,而是在固定索引 0 或手动输入的任何数字上显示内容。我不确定这会影响显示结果,这可能是错误的。

我的代码可以很好地在即时窗口中显示正确的内容,但链接到标签栏控制器的第二个窗口根本不显示任何内容。我已经交换了窗口和同样的问题 - 第一个窗口显示,第二个没有。

这是我准备的segue代码:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

    if ([[segue identifier] isEqualToString:@"showFileDetails"])

        UINavigationController * navigate = segue.destinationViewController;

        //create a reference to the index path
        NSIndexPath * indexPath = [self.tableView indexPathForSelectedRow];

        FileDetailsVC * fileDetails = (FileDetailsVC *)[navigate.viewControllers objectAtIndex: 0];

        //Create a reference to the parent folder that is being selected 
        ParentFile * selectedFile = (ParentFile*)[self.fetchedResultsController objectAtIndexPath:indexPath];

        //reference it to the the next view
        fileDetails.selectedFile = selectedFile;
    


我尝试在 [navigate.viewControllers objectAtIndex: ] 中使用“indexPath”;并将 objectAtIndex 更改为 objectAtIndexPath,但是它给出了错误消息“指向整数的指针不兼容...”和“'NSArray' 没有可见的@interface 声明选择器'objectAtIndexPath'”。

希望没有什么难解决的。谢谢。

【问题讨论】:

【参考方案1】:

Segue 的目标控制器是 UITabBarController 而不是 UINavigationController。您没有在另一个选项卡中为视图控制器设置任何数据源,因此您什么也看不到。

UITabBarController * tabBarController = segue.destinationViewController;
ViewControllerForTabItem2 * controller = (ViewControllerForTabItem2 *)[tabBarController.viewControllers objectAtIndex:1];
controller.dataSource = selectedFile; 

【讨论】:

非常感谢。我还以为是这样的小事。现在工作正常。 您是否知道如何通过导航到视图将 Tableview 中的详细信息通过 tabbar 传递?我想让导航控制器在那里用于另一个链接,但它会抛出错误,因为它无法识别细节。 您能否更具体地说明您想要实现的目标。 我想获得与这个问题完全相同的结果,但是,在两个视图之一中,我嵌入了一个导航控制器,因为它没有正确显示。它还有助于在添加按钮时将其命名为与标签栏中的第一个 vc 不同。 假设您获得了名为 nav 的导航控制器,那么 nav.topViewController 就是您的 View 1 控制器。您可以将 selectedFile 设置为 View 1 控制器。

以上是关于UITabBar 的 Topview 控制器的主要内容,如果未能解决你的问题,请参考以下文章

在呈现模态视图时显示 UITabBar

UITabBar 模态视图控制器

如何将 UITabBar 项目连接到 IB 中的视图控制器

UItabBar 改变视图控制器

UITabBar 控制器选项卡导航到不同的 UIViewControllers

如何将UITabBar嵌入故事板xcode中的另一个UITabBar