应用程序在使用SWRevealViewController时崩溃

时间:2017-06-26 08:05:03

标签: ios objective-c swrevealviewcontroller

我正在使用 SWRevealViewController 用于滑出菜单,用于 滑出菜单仅从主屏幕启动的应用程序 < / strong>在SignUp页面中按下注册按钮(即第一次运行应用程序)。

当应用程序第二次运行时,它会直接进入主屏幕,但应用程序崩溃,我正在 ViewController 中进行崩溃登录。

_barBtnMenu.target = self.revealViewController;
    _barBtnMenu.action = @selector(revealToggle:);
    [self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];
  

NSInvalidArgumentException',原因:' - [__ NSArrayM   insertObject:atIndex:]:object不能为nil。

对于应用程序的第一次运行,我正在使用“注册”按钮中的 显示模式搜索

SWRevealViewController

- (SWRevealViewController*)revealViewController
{
    UIViewController *parent = self;
    Class revealClass = [SWRevealViewController class];
    while ( nil != (parent = [parent parentViewController]) && ![parent isKindOfClass:revealClass] ) {}
    return (id)parent;
}

第一次运行时 正在返回一个值,但是对于第二次运行,它返回 nil

如果有人能帮助我解决问题。 提前谢谢。

修改

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    NSString *savedValue = [[NSUserDefaults standardUserDefaults]
                            stringForKey:@"email"];
    if (savedValue != nil) {

        UIStoryboard *storyboard = self.window.rootViewController.storyboard;
        ViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"viewController"];
        self.window.rootViewController =viewController;
        [self.window makeKeyAndVisible];
    } else {
        NSLog(@"Sign Up screen opened");
    }
    return YES;
}

2 个答案:

答案 0 :(得分:0)

您正在尝试在应用中实施自动登录功能

对于第二次启动,您必须在Appdelegate中维护一个用户已经登录的标志,如果用户已经登录,则必须从app delegate中的didfinishlaunchingwithoptions函数移动到SWRevealview的父控制器。

用于保存登录时的用户默认用户名和密码&amp;注册

检查didfinishlaunchingwithoptions中的值

如果存在值移至SWrevealview的父级

答案 1 :(得分:0)

感谢您的回复,

我通过将SignUp页面设为根视图来解决它

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    NSString *savedValue = [[NSUserDefaults standardUserDefaults]
                            stringForKey:@"email"];
    if (savedValue == nil) {
         UIStoryboard *storyboard = self.window.rootViewController.storyboard;
          SignUpViewController *signUpViewController = [storyboard instantiateViewControllerWithIdentifier:@"signUpViewController"];
        self.window.rootViewController = signUpViewController;
        [self.window makeKeyAndVisible];
    } else {
        NSLog(@"Sign Up screen closed,Hom page opened");
    }
    return YES;
}