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