实现ECSlidingViewController

时间:2013-06-26 10:15:44

标签: iphone objective-c ecslidingviewcontroller

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

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

始终设置为null。更多信息。

  1. LogIn Screen(InitViewController)------通过segue ---------> MainViewController。
  2. 在我的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"];
    

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

    由于

1 个答案:

答案 0 :(得分:1)

好的,我明白了。经过漫长而艰苦的经历后,我想通了。我在这里问了一个类似的问题:iOS Adding Menu Causes Crash When Not First View并最终回答了它。我刚刚问你的问题。

所以假设你有很多文件(每个都是.m和.h):

InitViewController

MenuViewController

MainViewController

SpeakersView

目标是使用不在幻灯片菜单上的按钮切换到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,它自动切换到扬声器或我设置的位置。

希望这可以帮到你。

有任何问题,请告诉我。

相关问题