如何在一个视图控制器中访问字符串变量到另一个视图控制器

时间:2010-02-09 10:15:42

标签: iphone objective-c scope declaration

我是iphone开发的新手,现在我想在所有视图控制器中访问字符串变量,但我知道在委托方法中声明变量,但我无法访问它,请帮助我。

Mainviewcontroller - > Viewcontroller1 _--> viewcontroller2 - > viewcontroller3 - > subwebview

我创建了一个主视图控制器,子视图类是Viewcontroller1,viewcontroller2,viewcontroller3。 subwebview是所有三个viewcontrollers的子类(Viewcontroller1,Viewcontroller2,Viewcontroller3)。

现在我想从所有viewcontrollers(Viewcontroller1,Viewcontroller2,Viewcontroller3)访问subwebview中的字符串变量,如何访问SUBWEBVIEW中的字符串变量。

我正在使用Rss提要阅读器并检索数据。

我已经在我的字符串变量中声明了所有视图控制器,如

 NSString * currentElement;
 NSMutableString * currentTitle, * currentDate, * currentSummary, * currentLink;
我被困在这里。我无法继续。请帮助我。

感谢。

5 个答案:

答案 0 :(得分:5)

最简单的方法是只传入对parentViewController的引用,然后就可以通过该引用访问变量了。不确定你使用的是哪个类名,但是这样:

MyChildController *tmpViewController = [[MyChildController alloc] initWithNibName:@"ChildView" bundle:nil];
tmpViewController.myParentController = self;

这当然要求您在子控制器中为父控件创建一个属性:

ParentController *myParentController;

为其添加@property@synthesize

答案 1 :(得分:2)

在主视图控制器中添加以下功能:

SecondViewController *second= [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

tmpViewController.myParentController = self;

在第二个视图控制器中添加以下属性:

FirstViewController *first;

然后像往常一样合成它。

答案 2 :(得分:0)

我不确定这是正确的方法,但我一直在关注这个,创建一个新的头类文件并在所有viewcontrollers中导入该头。在新创建的文件中声明字符串。

答案 3 :(得分:0)

最简单的方法是使您的变量属性为subwebview

@interface SubWebView : UIViewController {
    NSString * currentElement;
    NSMutableString *currentTitle;
    NSDate *currentDate;
    NSMutableString *currentSummary;
    NSURL *currentLink;
}

@property (copy) NSString *currentElement;
@property (copy) NSString *currentTitle;
@property (copy) NSDate *currentDate;
@property (copy) NSString *currentSummary;
@property (copy) NSURL *currentLink;

@end

@implementation SubWebView

@synthesize currentElement;
@synthesize currentTitle;
@synthesize currentDate;
@synthesize currentSummary;
@synthesize currentLink;

@end

// Then to access these properties

subwebview.currentDate = [NSDate date];
// etc...

答案 4 :(得分:0)

viewController2

中致电viewController1

将该代码放在ViewController1.m

//////****************///////

viewController2=[[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil];
viewController2.string2=@"ABC";

//////****************///////

确保string2文件中应定义ViewController2.h