【问题标题】:How to return values from view2 to view1 on UINavigationcontroll如何在 UINavigationcontroll 上将值从 view2 返回到 view1
【发布时间】:2011-05-24 16:54:11
【问题描述】:
我是 iPhone 开发的新手。使用导航栏时,如何将字符串值从 view2 传送到 view1。
我可以通过使用 pushviewcontroller 将字符串值从 view1 传输到 view2 到....但是当我使用导航栏的后退按钮返回到以前的视图时,我无法保存字符串值。
我已经看到与此“http://stackoverflow.com/questions/2903967/how-return-a-value-from-view2-to-view1-when-using-navigation-bar”相关的帖子,但事实并非如此为我工作,或者可能是我做错了。
我需要你的帮助来解决这个问题。
提前致谢,
Nagarajan Govindarajan。
【问题讨论】:
标签:
iphone
uinavigationcontroller
【解决方案1】:
您可以使用委托。您还可以在 view1 中有一个属性, view2 可以访问该字符串并将其存储到其中。委托是更好的方法。
查看 Apple 的示例,了解它们如何使用委托。你提到的问题是正确的,所以我认为你只需要充分理解它就可以调试你的实现。
【解决方案2】:
在您的项目应用程序委托类中声明并定义一个字符串(exp str1)。同时分配和初始化这个字符串。
在您看来 2 类 inport Appdelegate 类。像这样声明它的对象:
TestAppDelegate *appDeleg;
在类 2 的 viewDidLoad 中定义:appDeleg = [[UIApplication sharedApplication] delegate];
现在将 appDeleg.str1 = 您的字符串存储在 view2 中,您希望将其存储并在视图 1 中使用。
在视图 1 中做同样的声明并在那里使用 strView1= appDeleg.str1;
【解决方案3】:
我推荐的最佳方法是使用 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 类的实例。