0

我正在使用情节提要在视图之间切换。很简单,直到我尝试添加 ECSlidingViewController。

如果我将上面的幻灯片菜单添加到我调用的第一个视图中:

self.topViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Main"];

如果我将@"Main" 设置为@"Speakers",则视图加载得很好。我得到了幻灯片菜单和一切。@"Main" 也加载得很好。

但是,如果我像上面的代码一样首先加载@“Main”,然后将视图切换到我指定的“扬声器”,一旦我尝试使用以下代码调用幻灯片菜单,它就会崩溃:

   if(![self.slidingViewController.underLeftViewController isKindOfClass:[MenuViewController class]]) {
    self.slidingViewController.underLeftViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Menu"];
   }

   [self.view addGestureRecognizer:self.slidingViewController.panGesture];

我收到一个崩溃说明:* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[__NSArrayM insertObject:atIndex:]: object cannot be nil”

我尝试过多种方式切换视图。

我试过了:

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];

如果我不调用幻灯片菜单,每个都可以正常工作,但是当我添加滑动手势时,每个都会导致崩溃。

想法?

4

1 回答 1

1

好吧,我想通了。经过漫长而艰苦的经历,我想通了。

所以我有很多文件(每个.m和.h):

初始化视图控制器

菜单视图控制器

主视图控制器

演讲者查看

目的是使用不在幻灯片菜单上的按钮从 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];

这样,如果变量为空,则默认为@“Main”。

然后在 MainView.m 中,我在按下按钮后执行代码,我有这个:

InitViewController *ini;
ini = [self.storyboard instantiateViewControllerWithIdentifier:@"Init"];
ini.location = @"Speakers";

瞧,视图切换到扬声器就好了。更准确地说,它切换到 InitViewController,它会自动切换到扬声器或我设置的任何位置。

感谢大家的帮助。

于 2013-08-08T16:28:31.243 回答