1

我正在尝试实现 ECSlidingViewController 并且我在我的故事板中使用 segues。我遇到了MainViewController 的 viewDidLoad被调用两次的问题

self.slidingViewController.underLeftViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Menu"];

总是被设置为空。更多信息。

  1. 登录屏幕(InitViewController)-----通过 segue---------> MainViewController。

在我的 MainViewController 中,我有以下代码。

-(void)addMenuViewControllerWithGesture{
self.view.layer.shadowOpacity = 0.075f;
self.view.layer.shadowRadius = 10.0f; 
self.view.layer.shadowColor = [UIColor blackColor].CGColor;
if (![self.slidingViewController.underLeftViewController isKindOfClass:[rsMenuViewController class]]) {

self.slidingViewController.underLeftViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Menu"];
}
}

在我的 InitViewController (登录)

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

MainViewController *controller = segue.destinationViewController;

// setting some values before going to the next view.

controller.id = 0;

controller.name = @"harish";

self.topViewController = controller;

}

通过这样做,MainViewController 的 viewDidLoad被调用了两次,并且下面的值总是设置为 null。

self.slidingViewController.underLeftViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Menu"];

希望很清楚。我有点卡在这里并寻找解决方案。

谢谢

4

1 回答 1

1

好吧,我想通了。经过漫长而艰苦的经历,我想通了。我在这里问了一个类似的问题:iOS 添加菜单导致非第一次查看时崩溃并最终回答了它。我最近才想到你的问题。

因此,假设您有许多文件(每个文件都有 .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:49:00.517 回答