我正在尝试将对象从表格单元格转换为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个视图控制器访问它。
答案 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属性,然后从其他控制器获取值。