如何将对象转换为UITabBarController

时间:2014-01-26 11:48:19

标签: ios objective-c uitableview uitabbarcontroller segue

我正在尝试将对象从表格单元格转换为UITabBarController。我将segue发送到视图控制器的代码如下:

#import "DetailViewController.h"

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"UpdateContacts"]) {
        NSManagedObject *selectedDevice = [self.contactarray objectAtIndex:[[self.tableView    indexPathForSelectedRow] row]];
        DetailViewController *destViewController = segue.destinationViewController;
        destViewController.contactdb = selectedDevice;
        refreshControl = nil;
    }
}

同样在DetailsViewController.h中我添加了contactdb属性 这个工作正常,现在我不知道如何将其转换为UITabBarController所以我可以从UITabBarController中的2个视图控制器访问它。

2 个答案:

答案 0 :(得分:1)

我不清楚,你指的是你的TabBarController的DetailViewController?

一般来说,当您希望在视图控制器之间传递数据时,流量比正常情况稍微复杂一些,您可以使用通知/侦听器模式。例如,在传递控制器中,您可以执行以下操作:

[[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_REFRESH 
                                                    object:contactDb];

在您的接收控制器中,您将注册以收听如下通知:

[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(gotData:) 
                                             name:NOTIFICATION_REFRESH 
                                           object:nil];

在同一个控制器中,这里是捕获该通知和对象的代码:

- (void)gotData:(NSNotification *) notification {
   NSObject *myData = [notification object];
}

您需要在标题中定义通知类型,如下所示:

extern NSString* const NOTIFICATION_REFRESH;

它在.m文件中的实现如下:

NSString* const NOTIFICATION_REFRESH = @"notificationRefresh";

答案 1 :(得分:0)

出于这种目的,我通常会保留一个在项目的任何地方都可见的单例对象(.pch文件中的makin #import)。然后我声明了我想要在不同对象(例如控制器)之间共享的所有必要的属性,并通过分配值和访问来使用它们。例如,在prepareForSegue中,我将分配在该公共单例对象中声明的contactdb属性,然后从其他控制器获取值。