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