对象创建视图并在iOS中的视图之间共享数据

时间:2013-05-09 15:26:32

标签: ios uiviewcontroller

我是iOS新手。我最近遇到了一个问题。 我有一个视图A和视图B.视图A有一个导航控制器。视图A有一个切换到B的按钮。每次B创建一个新对象时,我都会单击此按钮。如何跟踪此对象以在这两个视图之间共享数据。 感谢

2 个答案:

答案 0 :(得分:2)

有几种方法可以做到这一点。

您可以拥有B的属性,A在您推动之前设置。 (NSDictionary,Array,String等) 这不是最好的方式,但它会起作用。

UIViewController *viewB = [[UIViewController alloc]init];
[viewB setMyProperty:@"some data!"];
[self.navigationController pushViewController:viewB animated:YES];

您还可以使用NSNotificationCenter将对象传递到下一个视图。

NSDictionary *dictionary = [NSDictionary dictionaryWithObject:
                         [NSNumber numberWithInt:index]
                      forKey:@"index"];

[[NSNotificationCenter defaultCenter] postNotificationName:@"myNotification"
                                      object:self
                                      userInfo:dictionary];

我通常使用的方法是设置和保存我的数据的对象,其中包含在AppDelegate中初始化的关联协议。然后,任何需要读取/写入内容的视图都会抓取指向该对象的指针并随之运行。

@class AppData;

@protocol AppDataProtocol

- (AppData*)theAppData;

@end 

在视图中,您可以使用此方法获取指针。

-(AppData*)theAppData {

    id<AppDataProtocol> theDelegate = (id<AppDataProtocol>)[UIApplication sharedApplication].delegate;
    AppData* theData = (AppData*)theDelegate.theAppData;

    return theData;
}

和此。

 appData = [self theAppData];

然后,您就可以轻松访问appData的任何属性。

答案 1 :(得分:0)

-(void)fnButtonA{

ViewB *vcB = [[ViewB alloc] initWithData:DataToB];
[[self navigationController] pushViewController:vcB animated:Yes];

}


In ViewB.m edit the init function to 

-(UIViewController *)initWithData:(NSMutableDictionary*)data