我在故事板中有两个视图控制器UIViewController和一个UITableViewController。我想从UIViewController访问UITableViewController的属性。我该怎么做呢?我是否需要使用AppDelegate(如何?),还是有其他方法?
编辑我目前正在向appDelegate添加以下代码,该代码具有以下属性:tableViewController。
MyTableViewController *tvc = [[MyTableViewController alloc]initWithNibName:@"MyTableViewController" bundle:nil];
MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.tableViewController = tvc;
我试图在另一个viewController中分配tableViewController的属性,如下所示,但该属性为NULL。
MyTableViewController *tvc = (MyTableViewController*)appDelegate.tableViewController;
答案 0 :(得分:9)
如果要首先访问其他类的属性,则需要将.h文件导入到所需的位置,然后创建该类的对象,然后访问所需的属性。
假设您需要访问第二个视图控制器属性 FirstViewController。然后在FirstViewController.m中定义SecondViewController.h文件并生成对象
SecondViewController *controller = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:Nil];
controller.property;
答案 1 :(得分:1)
将所需的子视图控制器公开为包含它们的视图控制器的属性。
将您的根视图控制器公开为您的应用委托的属性,并将它们合成。
如果要访问其他UIViewController,请首先获取对appDelegate的引用:
MyAppDelegate* myAppDelegate = [[UIApplication sharedApplication] delegate];
然后只需使用您的属性链即可访问所需的视图控制器。
SubSubViewController* ssvc = myAppDelegate.rootViewController.subViewController.subSubViewController;