使用导航栏时如何将值从view2返回到view1

时间:2010-05-25 11:02:24

标签: iphone navigation tableview viewcontroller pushviewcontroller

我是iPhone开发新手。使用导航栏时,如何将字符串值从view2传送到view1。通过使用pushviewcontroller将字符串值从view1传递到view2到view3到....我没有问题但是当我使用导航栏的Back按钮回到以前的视图时,我无法保存字符串值。   我需要你帮助解决这个问题。

提前致谢

2 个答案:

答案 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)

这样做的方法不止一种。以下是一些:

  1. 您可以通过导航控制器的viewControllers属性访问导航堆栈中的所有视图控制器:self.navigationController.viewControllers

  2. 您可以通过parentViewController属性访问上一个视图控制器(即将当前控制器推送到导航堆栈的控制器):self.parentViewController

  3. 您可以使用委托模式,其中上一个(父)视图控制器将是当前(子)控制器的委托。

  4. 您可以在父控制器中保留对子控制器的引用(保留)。

  5. 在前3个中,子控制器负责将数据传递给父控制器。在第4个中,父母将在释放之前从孩子那里获取数据。