不是第一次查看时,iOS添加菜单导致崩溃
我正在使用故事板来切换视图。 很简单,直到我尝试添加ECSlidingViewController。
如果我将上面的幻灯片菜单添加到我使用这个调用的第一个视图:
self.topViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Main"];
如果我将@“Main”设置为@“Speakers”,则视图加载得很好。 我得到了滑动菜单和一切。 @“主”也加载得很好。
但是,如果我像上面的代码一样首先加载@“Main”,然后将视图切换到我指定的“Speakers”,那么一旦我尝试用此代码调用滑动菜单,就会崩溃。
if(![self.slidingViewController.underLeftViewController isKindOfClass:[MenuViewController class]]) { self.slidingViewController.underLeftViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Menu"]; } [self.view addGestureRecognizer:self.slidingViewController.panGesture];
我得到一个崩溃说明: *终止应用程序由于未捕获的exception'NSInvalidArgumentException',原因:'* – [__ NSArrayM insertObject:atIndex:]:对象不能为零'
我尝试了很多方法来切换视图。
我试过了:
SpeakersView *second= [self.storyboard instantiateViewControllerWithIdentifier:@"Speakers"]; [self presentViewController:second animated:YES completion:nil];
我试过了:
SpeakersView *svc = [self.storyboard instantiateViewControllerWithIdentifier:@"Speakers"]; [self presentViewController:svc animated:YES completion:nil];
如果我不调用幻灯片菜单,每个人工作得很好,但是当我添加幻灯片手势时,每个都会导致崩溃。
想法?
好吧,我明白了。 经过漫长而艰辛的经历,我明白了。
所以我有很多文件(每个.m和.h):
InitViewController
MenuViewController
MainViewController
SpeakersView
目标是使用不在幻灯片菜单上的button从MainViewController切换到SpeakersView,但直接导致幻灯片菜单为空,正如Phillip Mills指出的那样。
相反,我把它放在InitViewController.h中,就在@Interface的下面:
@property (nonatomic, retain) NSString *location;
然后这在InitViewController.m中的@implementation下:
@synthesize location;
我原来在InitViewController.m中的ViewDidLoad下:
self.topViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Main"];
我改变了这个:
if([location length] == 0){location = @"Main";} self.topViewController = [self.storyboard instantiateViewControllerWithIdentifier:location];
这样如果variables是空的,它默认为@“Main”。
然后在MainView.m中,按下button后执行代码,我有这样的:
InitViewController *ini; ini = [self.storyboard instantiateViewControllerWithIdentifier:@"Init"]; ini.location = @"Speakers";
瞧,视图切换到Speakers。 更准确地说,它切换到InitViewController自动切换到扬声器或任何我设置的位置。
感谢大家的帮助。