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

Iphone 使用导航栏时如何将值从view2返回到view1,iphone,navigation,tableview,viewcontroller,pushviewcontroller,Iphone,Navigation,Tableview,Viewcontroller,Pushviewcontroller,我是iPhone开发的新手。使用导航栏时,如何将字符串值从view2传递到view1。通过使用pushviewcontroller,我可以将字符串值从view1传送到view2,从view3传送到……但当我使用导航栏的“后退”按钮返回到以前的视图时,我无法保存字符串值。 我需要你的帮助来解决这个问题 提前感谢实现这一点的方法不止一种。以下是一些: 您可以通过导航控制器的ViewController属性访问导航堆栈中的所有视图控制器:self.navigationController.ViewCo

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


提前感谢

实现这一点的方法不止一种。以下是一些:

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

  • 您可以通过parentViewController属性:
    self.parentViewController

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

  • 可以在父控制器中保留对子控制器的引用(保留)


  • 在前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
    

    希望这有帮助。

    谢谢Madhu,你完成了我的工作。你的填鸭法帮助我了解了一些基本的图案样式。@Anil Kumar:填鸭法只适用于newbies@property(非原子,保留)id委托;保留正确或应分配。这有什么不同吗?谢谢Can Berk,我在MVC上使用委托模式。谢谢你的及时回复