Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 已登录的用户使用NSUserDefaults执行segue不工作用户数据_Ios_Objective C_Iphone_Xcode_Nsuserdefaults - Fatal编程技术网

Ios 已登录的用户使用NSUserDefaults执行segue不工作用户数据

Ios 已登录的用户使用NSUserDefaults执行segue不工作用户数据,ios,objective-c,iphone,xcode,nsuserdefaults,Ios,Objective C,Iphone,Xcode,Nsuserdefaults,如果用户登录到主页并且segues已连接,并且我已将标识符指定为“loggedin”,那么我实际上正在尝试执行segue 而且我目前还没有进行注销编码,因此无法清除NSUserDefaults,我也检查过,它会返回我的值 下面是我的看法做了第一次查看控制器加载方法在这个我从用户的otp手机号码 - (void)viewDidLoad { [super viewDidLoad]; NSUserDefaults* defaults = [NSUserDefaults standard

如果用户登录到主页并且segues已连接,并且我已将标识符指定为“loggedin”,那么我实际上正在尝试执行segue 而且我目前还没有进行注销编码,因此无法清除
NSUserDefaults
,我也检查过,它会返回我的值

下面是我的看法做了第一次查看控制器加载方法在这个我从用户的otp手机号码

- (void)viewDidLoad {
    [super viewDidLoad];
    NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
    self.custid =[defaults objectForKey:@"uid"];
    NSLog(@"Customer id--%@",self.custid);
    if(self.custid!=nil)
    {
        [self performSegueWithIdentifier:@"loggedin" sender:self];
    }

    [_checkboxb setBackgroundImage:[UIImage imageNamed:@"unsigned checkbox"]
                         forState:UIControlStateNormal];
    [_checkboxb setBackgroundImage:[UIImage imageNamed:@"signed check box"]
                         forState:UIControlStateSelected];
    UIGraphicsBeginImageContext(self.view.frame.size);
}
这是我的故事板,在日志中你可以看到错误


并且该视图控制器的我的代码正在执行的不是登录正在执行的第一个视图,而是第一个视图控制器的视图。不要在第一个视图控制器中检查用户登录状态。检查
AppDelegate
中的登录状态,并根据该状态分配根视图控制器

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

  self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
  UIViewController *viewController;
  NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
  if([defaults objectForKey:@"uid"]!=nil)
  {
    viewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewController"];
  }
  else
  {
    viewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewController1"];
  }
  self.window.rootViewController = viewController;//With out NavigationController
  //self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:viewController];//With NavigationController
  [self.window makeKeyAndVisible];
  return YES;
}

不要在first view controller中检查用户登录状态。检查appdelegate中的登录状态,并根据该状态辅助根视图控制器。@RajeshkumarR您建议我在哪里使用根视图控制器??在appdelegate
didFinishLaunchingWithOptions
MethodPerformScheue中将不会在vieDdidLoad方法中调用。请在viewDidAppear方法中调用它。那个标识符是segue的标识符吗??或者视图控制器id??是vc的故事板id吗???@Akshay No.是视图控制器的标识I清除nsuserdefaults,注销选项在我菜单的tableview中vc@Akshay为什么要在注销后执行segue to otp view?如果用户希望使用类似的不同id登录