如何在UINavigationcontroller上将视图中的值返回到视图1

时间:2011-05-24 07:42:50

标签: iphone uinavigationcontroller

我是iPhone开发新手。使用导航栏时,如何将字符串值从view2传送到view1。

通过使用pushviewcontroller将字符串值从view1传递到view2到....我没有问题但是当我使用导航栏的Back按钮回到以前的视图时,我无法保存字符串值。

我已经看过帖子相关的这个“http://stackoverflow.com/questions/2903967/how-return-a-value-from-view2-to-view1-when-using-navigation-bar”这不是为我工作或者我做错了。

我需要你帮助解决这个问题。

提前致谢,

Nagarajan Govindarajan。

3 个答案:

答案 0 :(得分:1)

您可以使用委托。您还可以在view1中拥有一个属性,view2可以访问并存储该字符串。代表是更好的方式。

看一下Apple的样本,了解他们如何使用代表。你提到的问题是正确的,所以我认为你只需要很好地理解它就可以调试你的实现。

答案 1 :(得分:1)

在您的项目应用中,委托类声明并定义一个字符串(exp str1)。还要分配并初始化此字符串。

在你的视图中2类inport Appdelegate类。声明它的对象如:

TestAppDelegate *appDeleg;

在class 2的viewDidLoad中定义:appDeleg = [[UIApplication sharedApplication] delegate];

现在将appDeleg.str1存储在view2中您希望在视图1中存储和使用的字符串。

在视图1中执行相同的声明并在那里使用strView1 = appDeleg.str1;

答案 2 :(得分:-1)

我建议的最佳方法是使用Data类。在Data类中声明变量并在整个过程中使用它们。这是它的工作原理:

// DataClass.h

@interface DataClass : NSObject {    

NSString *str;     

}    
@property(nonatomic,retain)NSString *str;    
+(DataClass*)getInstance;    
@end  

// DataClass.m

@implementation DataClass    
@synthesize str;    
static DataClass *instance =nil;    
+(DataClass *)getInstance    
 {    
    @synchronized(self)    
    {    
        if(instance==nil)    
        {    

             instance= [DataClass new];    
        }    
    }    
    return instance;    
}    

现在在视图控制器中,您需要将此方法称为:

DataClass *obj=[DataClass getInstance];  
obj.str= @"I am Global variable";  

每个视图控制器都可以访问此变量。您只需要创建一个Data类的实例。