如何使用Tab Bar Controller正确使用segue?

时间:2013-04-18 15:01:56

标签: ios xcode uitabbarcontroller storyboard uistoryboardsegue

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

- (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,因此该函数不起作用。

有人知道如何修复???

1 个答案:

答案 0 :(得分:0)

Typecast输出

[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];
    }
}