我正在尝试实现ECSlidingViewController &我在我的故事板中使用了segues。我遇到了一个问题,MainViewController的viewDidLoad被调用了两次并且
self.slidingViewController.underLeftViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Menu"];总是被设置为空。更多信息。
在我的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 (LogIn)中
-(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"];希望一切都清楚。我被困在这里寻找解决方案。
谢谢
发布于 2013-08-08 16:49:00
好吧,我想出来了。经过漫长艰苦的经历,我终于明白了。我在这里问了一个类似的问题:iOS Adding Menu Causes Crash When Not First View,并最终回答了它。我最近刚问到你的问题。
因此,假设您有许多文件(每个文件都有.m和.h ):
InitViewController
MenuViewController
MainViewController
SpeakersView
目标是使用一个按钮(不是幻灯片菜单上的按钮)切换到MainViewController,但这样做直接导致幻灯片菜单为null,菲利普·米尔斯指出。
相反,我把它放在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,它自动切换到扬声器或任何我设置的位置。
希望这能帮到你。
如果有任何问题,请告诉我。
https://stackoverflow.com/questions/17317354
复制相似问题