我是iPhone开发新手。使用导航栏时,如何将字符串值从view2传送到view1。通过使用pushviewcontroller将字符串值从view1传递到view2到view3到....我没有问题但是当我使用导航栏的Back按钮回到以前的视图时,我无法保存字符串值。 我需要你帮助解决这个问题。
提前致谢
答案 0 :(得分:3)
如果将当前类的引用传递给下一个类并使用此引用更改值,则可以轻松完成此事。
像: 要推的课程。
@interface B:UIViewController{
id delegate;
}
@property (nonatomic,retain) id delegate;
@end
@implementation B
@synthesize delegate;
-(void)methodA{
[delegate setNewString2:@"Madhup"];
}
@end
你要推动B的课程:
@interface A:UIViewController{
NSString *newString;
}
@property (nonatomic,retain) NSString *newString;
@end
@implementation A
@synthesize newString
- (void)method2{
B *newBObject = .......;
[newBObject setDelegate:self];
[self.navigationController pushViewCo.......];
}
@end
希望这有帮助。
答案 1 :(得分:2)
这样做的方法不止一种。以下是一些:
您可以通过导航控制器的viewControllers属性访问导航堆栈中的所有视图控制器:self.navigationController.viewControllers
您可以通过parentViewController属性访问上一个视图控制器(即将当前控制器推送到导航堆栈的控制器):self.parentViewController
您可以使用委托模式,其中上一个(父)视图控制器将是当前(子)控制器的委托。
您可以在父控制器中保留对子控制器的引用(保留)。
在前3个中,子控制器负责将数据传递给父控制器。在第4个中,父母将在释放之前从孩子那里获取数据。