如何从另一个类访问UISplitViewController中的自定义UIViewController
问题描述:
我在UISplitViewController中有一个自定义的customUIViewController,并想从另一个类的detailView(这是UISplitViewController中的另一个UIViewController)访问customUiViewController的实例;我怎样才能做到这一点?如何从另一个类访问UISplitViewController中的自定义UIViewController
CODE SNIP(别担心有关语法;它是缩短了)
myAppDelegate.m
customViewController *masterView = [[customViewController alloc] init;
UINavigationController *NVC = [[UINavigationController alloc] initWithRootViewController:masterView];
MYViewController *detailView = [[MyViewController alloc] init;
UISplitViewController *mySplit = [...];
mySplit.viewControllers = NSArray[...masterview,detailView,nil];
[window addSubView:mySplit view];
MyViewController.m
-(void) someMethod {
customViewController *myInstance = (customViewController)[self.splitViewController objectAtIndex:0]; ??
// I think this just gets the outter UINavigationController
[myInstance doSomething];
}
customViewController.m
-(void) doSomething {
}
I希望能够访问customViewController来调用doSomething方法。无论customViewController和myViewController相同UISplitViewController
答
如果你正在使用默认UISplitView工作XCode所做的,你需要引用AppDelegate来获得splitView的ivar:
YourAppDelegate *del = (YourAppDelegate *)[[UIApplication sharedApplication]delegate];
UISplitViewController *split = del.splitViewController;
NSArray *vcArray = split.viewControllers;
//left is objectAtIndex:0, right is objectAtIndex:1
答
UIViewControllers有splitViewController属性,因此尝试使用,要得到一个内部参考:
customViewController *myInstance =
(customViewController *)[self.splitViewController.viewControllers
objectAtIndex:0];
指数0是在拆分视图控制器左侧视图控制器。
编辑:
如果左侧视图控制器是一个UINavigationController,然后得到的根视图控制器,这样做:
UINavigationController *nc =
(UINavigationController *)[self.splitViewController.viewControllers
objectAtIndex:0];
customViewController *myInstance =
(customViewController *)[nc.viewControllers objectAtIndex:0];
这个工程!谢谢 – Arcadian 2010-11-07 00:21:34
为什么我只在split.viewControllers中有一个。在iPad上工作,但不适用于iPhone – Gank 2014-12-17 09:10:30