【问题标题】:How return a value from view2 to view1 when using navigation bar使用导航栏时如何将值从 view2 返回到 view1
【发布时间】:2010-05-25 11:02:24
【问题描述】:

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

提前致谢

【问题讨论】:

    标签: iphone navigation tableview viewcontroller pushviewcontroller


    【解决方案1】:

    如果将当前类的引用传递给下一个类并使用此引用更改值,则可以轻松完成此操作。

    喜欢: 要推送的类。

    @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:勺子喂食只对新手开放
    • @property (nonatomic,retain) id 代表;是保留正确还是应该分配。它有什么不同吗?
    【解决方案2】:

    有不止一种方法可以做到这一点。以下是一些:

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

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

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

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

    在前 3 个中,子控制器将负责将数据交给父控制器。 4th,parent 会先从 child 那里获取数据,然后再释放。

    【讨论】:

    • 谢谢 Can Berk,我得到了委托模式的东西,在 MVC 上工作。感谢您的及时回复
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多