我是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;
我被困在这里。我无法继续。请帮助我。
感谢。
答案 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