0

我的应用程序使用不同的主细节,它包含在带有 tableView 的初始 ViewController 中,但是当用户单击导航控制器中的添加按钮时,我需要使用以下函数发送一个对象:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"AddDGV"]) {
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
        NSManagedObject *object = [[self fetchedResultsController] objectAtIndexPath:indexPath];
        [[segue destinationViewController] setDetailView:object];
    }
}

当目标是另一个 ViewController 时,代码可以正常工作,但我的应用程序被设计为使用 TabBarController 而不是 ViewController。此 TabBar 有 2 个选项卡,每个选项卡都有不同的导航控制器,第一个是标识符“AddDGV”的目标。我创建了 .m/.h 文件并在情节提要中关联了该类,并将实例变量“DetailView”设置为 ID。

@property (strong, nonatomic) id detailItem;

问题是编译器不知道这个变量,因为命令[segue destinationViewController]包含视图控制器,其内容应该显示在 segue 的末尾。由于 segue 的结尾是 TabBarController,因此该功能不起作用。

有人知道怎么解决吗???

4

1 回答 1

0

对输出进行类型转换

[segue destinationViewController]

如下

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"AddDGV"]) {
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
        NSManagedObject *object = [[self fetchedResultsController] objectAtIndexPath:indexPath];
        [(YourDestinationViewController *)[segue destinationViewController] setDetailView:object];
    }
}
于 2013-04-19T03:03:38.147 回答