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

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

我的代码可以在即时窗口中显示正确的内容,但工作正常,但是链接到标签栏控制器的第二个窗口根本不显示任何内容。我交换了窗口,并遇到了相同的问题-第一个窗口显示,第二个没有。

这是我准备的安全代码:

-(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'”。

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

最佳答案

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

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

08-05 23:44