title: [LoginViewController viewControllers]: unrecognized selector sent to instance 0x10942c3d0
body: <p>Help!</p>
  
  <p>I am new to XCode and now i am facing a problem.</p>
  
  <p>When i use the following code in the app and create a new ViewController class LoginViewController.</p>
  
  <p>In iPhone, the app work great. But when I test in iPad it crash and display the following content in the log: </p>
  
  <pre><code>2014-05-06 17:05:31.289 We Love HK[38711:60b] -[LoginViewController viewControllers]: unrecognized selector sent to instance 0x10942c3d0
  2014-05-06 17:05:31.291 We Love HK[38711:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[LoginViewController viewControllers]: unrecognized selector sent to instance 0x10942c3d0'
  *** First throw call stack:
  (
      0   CoreFoundation                      0x00000001019fc495 __exceptionPreprocess + 165
      1   libobjc.A.dylib                     0x000000010175b99e objc_exception_throw + 43
      2   CoreFoundation                      0x0000000101a8d65d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205
      3   CoreFoundation                      0x00000001019edd8d ___forwarding___ + 973
      4   CoreFoundation                      0x00000001019ed938 _CF_forwarding_prep_0 + 120
      5   We Love HK                          0x0000000100001086 -[AppDelegate application:didFinishLaunchingWithOptions:] + 246
      6   UIKit                               0x00000001003033d9 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 264
      7   UIKit                               0x0000000100303be1 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1605
      8   UIKit                               0x0000000100307a0c -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 660
      9   UIKit                               0x0000000100318d4c -[UIApplication handleEvent:withNewEvent:] + 3189
      10  UIKit                               0x0000000100319216 -[UIApplication sendEvent:] + 79
      11  UIKit                               0x0000000100309086 _UIApplicationHandleEvent + 578
      12  GraphicsServices                    0x0000000103b2b71a _PurpleEventCallback + 762
      13  GraphicsServices                    0x0000000103b2b1e1 PurpleEventCallback + 35
      14  CoreFoundation                      0x000000010197e679 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 41
      15  CoreFoundation                      0x000000010197e44e __CFRunLoopDoSource1 + 478
      16  CoreFoundation                      0x00000001019a7903 __CFRunLoopRun + 1939
      17  CoreFoundation                      0x00000001019a6d83 CFRunLoopRunSpecific + 467
      18  UIKit                               0x00000001003072e1 -[UIApplication _run] + 609
      19  UIKit                               0x0000000100308e33 UIApplicationMain + 1010
      20  We Love HK                          0x00000001000044b3 main + 115
      21  libdyld.dylib                       0x000000010207f5fd start + 1
  )
  libc++abi.dylib: terminating with uncaught exception of type NSException
  (lldb) 
  </code></pre>
  
  <p>And LoginViewController.h: </p>
  
  <pre><code>#import &lt;Foundation/Foundation.h&gt;
  #import &lt;UIKit/UIKit.h&gt;
  #import "KeychainItemWrapper.h"
  
  @import Security;
  
  @interface LoginViewController : UIViewController &lt;UITextFieldDelegate&gt;
  
  @property (nonatomic, retain) IBOutlet UILabel *version_label;
  
  @property (strong, nonatomic) IBOutlet UITextField *txtUsername;
  @property (strong, nonatomic) IBOutlet UITextField *txtPassword;
  
  
  - (IBAction) loginClicker:(id)sender;
  - (IBAction) backgroundTap:(id)sender;
  - (IBAction) keyboardDismiss: (id) sender;
  - (IBAction) click_exit: (id)  sender;
  
  @end
  </code></pre>
  
  <p>LoginViewController.m: </p>
  
  <pre><code>#import "LoginViewController.h"
  
  @implementation LoginViewController;
  
  @synthesize version_label;
  @synthesize txtUsername;
  @synthesize txtPassword;
  
  -(void)viewDidLoad
  {
      KeychainItemWrapper *keychainWrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"UserAuthToken" accessGroup:nil];
      NSString *version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];  // Get App Version
      NSString *build = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];  // Get App Build Number
      version_label.numberOfLines = 0;                               // Enable \n break line
      version_label.hidden = NO;                                     // Disable Hidden
      //[keychainWrapper resetKeychainItem];
      version_label.text = [NSString stringWithFormat:@"V %@ (Build %@)", version, build];    // Change Version Label's Content
       if ([keychainWrapper objectForKey:(__bridge id)(kSecAttrAccount)] &amp;&amp; [keychainWrapper objectForKey:(__bridge id)(kSecValueData)]){
          txtUsername.text = [keychainWrapper objectForKey:(__bridge id)(kSecAttrAccount)];
          txtPassword.text = [keychainWrapper objectForKey:(__bridge id)(kSecValueData)];
      }
  }
  
  -(IBAction) keyboardDismiss: (id) sender{
      [txtUsername resignFirstResponder];
      [txtPassword resignFirstResponder];
  }
  
  - (IBAction)backgroundTap:(id)sender {
      [txtUsername resignFirstResponder];
      [txtPassword resignFirstResponder];
  }
  
  - (IBAction)click_exit:(id)sender {
      //[txtUsername resignFirstResponder];
      //[txtPassword resignFirstResponder];
  }
  
  - (IBAction)loginClicker:(id)sender {
      NSInteger success = 0;
      @try {
  
          if([[self.txtUsername text] isEqualToString:@""] || [[self.txtPassword text] isEqualToString:@""] ) {
  
              [self alertStatus:@"請輸入帳號及密碼！" :@"登入失敗！" :0];
  
          } else {
              KeychainItemWrapper *keychainWrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"UserAuthToken" accessGroup:nil];
              NSString *post =[[NSString alloc] initWithFormat:@"username=%@&amp;password=%@",[self.txtUsername text],[self.txtPassword text]];
              NSLog(@"PostData: %@",post);
  
              NSURL *url=[NSURL URLWithString:@"http://ls.arefly.com/other/php/welovehk/login.php"];
  
              NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
  
              NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]];
  
              NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
              [request setURL:url];
              [request setHTTPMethod:@"POST"];
              [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
              [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
              [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
              [request setHTTPBody:postData];
  
              //[NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]];
  
              NSError *error = [[NSError alloc] init];
              NSHTTPURLResponse *response = nil;
              NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&amp;response error:&amp;error];
  
              NSLog(@"Response code: %ld", (long)[response statusCode]);
  
              if ([response statusCode] &gt;= 200 &amp;&amp; [response statusCode] &lt; 300)
              {
                  NSString *responseData = [[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
                  NSLog(@"Response ==&gt; %@", responseData);
  
                  NSError *error = nil;
                  NSDictionary *jsonData = [NSJSONSerialization
                                            JSONObjectWithData:urlData
                                            options:NSJSONReadingMutableContainers
                                            error:&amp;error];
  
                  success = [jsonData[@"login_status"] integerValue];
                  NSLog(@"Success: %ld", (long)success);
  
                  if(success == 1)
                  {
                      NSLog(@"Login SUCCESS");
                      [keychainWrapper setObject:[self.txtUsername text] forKey:(__bridge id)(kSecAttrAccount)];
                      [keychainWrapper setObject:[self.txtPassword text] forKey:(__bridge id)(kSecValueData)];
                      NSString *name_msg = (NSString *) jsonData[@"name_msg"];
                      [self alertStatus:name_msg :@"歡迎！" :0];
                  } else {
                      NSString *error_msg = (NSString *) jsonData[@"error_message"];
                      [self alertStatus:error_msg :@"登入失敗！" :0];
                      txtPassword.text = @"";
                  }
  
              } else {
                  //if (error) NSLog(@"Error: %@", error);
                  [self alertStatus:@"Connection Failed" :@"登入失敗！" :0];
                  txtPassword.text = @"";
              }
          }
      }
      @catch (NSException * e) {
          NSLog(@"Exception: %@", e);
          [self alertStatus:@"登入失敗！" :@"錯誤：" :0];
          txtPassword.text = @"";
      }
      if (success) {
          [self performSegueWithIdentifier:@"login_success" sender:self];
      }
  
  }
  
  - (void) alertStatus:(NSString *)msg :(NSString *)title :(int) tag
  {
      UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:title
                                                          message:msg
                                                         delegate:self
                                                cancelButtonTitle:@"OK"
                                                otherButtonTitles:nil, nil];
      alertView.tag = tag;
      [alertView show];
  }
  
  @end
  </code></pre>
  
  <p>and here also didFinishLaunchingWithOptions in AppDelegate.m (but i do not think i change anything of it): </p>
  
  <pre><code>- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  {
      // Override point for customization after application launch.
      if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
          UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
          UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
          splitViewController.delegate = (id)navigationController.topViewController;
      }
      return YES;
  }
  </code></pre>
  
  <p>and here is my Main_iPad.storyboard:</p>
  
  <p><a href="http://uploadpie.com/rTIVc" rel="nofollow">http://uploadpie.com/rTIVc</a></p>
  
  <p>and here is my Main_iPhone.storyboard:</p>
  
  <p><a href="http://uploadpie.com/gmpms" rel="nofollow">http://uploadpie.com/gmpms</a></p>
  
  <p>Can any one help me?</p>
  
  <p>Thanks!</p>
  
  <p><strong>UPDATE</strong></p>
  
  <p>After i comment the whole <code>if</code> block in <code>-(BOOL)application:didFinishLaunchingWithOptions:</code>, its become ok and do not crash. </p>
  
  <p>But there are other crash appear when i want to do <code>[self performSegueWithIdentifier:@"login_success" sender:self];</code></p>
  
  <pre><code>2014-05-06 18:55:28.839 We Love HK[45660:60b] Success: 1
  2014-05-06 18:55:28.839 We Love HK[45660:60b] Login SUCCESS
  2014-05-06 18:55:28.887 We Love HK[45660:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Application tried to present a Split View Controllers modally &lt;LoginViewController: 0x109429ca0&gt;.'
  *** First throw call stack:
  (
      0   CoreFoundation                      0x00000001019fc495 __exceptionPreprocess + 165
      1   libobjc.A.dylib                     0x000000010175b99e objc_exception_throw + 43
      2   UIKit                               0x0000000100408c93 -[UIViewController presentViewController:withTransition:completion:] + 4027
      3   We Love HK                          0x0000000100005a35 -[LoginViewController loginClicker:] + 3813
      4   UIKit                               0x0000000100309f06 -[UIApplication sendAction:to:from:forEvent:] + 80
      5   UIKit                               0x0000000100309eb4 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 17
      6   UIKit                               0x00000001003e6880 -[UIControl _sendActionsForEvents:withEvent:] + 203
      7   UIKit                               0x00000001003e595d -[UIControl touchesBegan:withEvent:] + 219
      8   UIKit                               0x0000000100340b74 -[UIWindow _sendTouchesForEvent:] + 300
      9   UIKit                               0x00000001003416e4 -[UIWindow sendEvent:] + 925
      10  UIKit                               0x000000010031929a -[UIApplication sendEvent:] + 211
      11  UIKit                               0x0000000100306aed _UIApplicationHandleEventQueue + 9579
      12  CoreFoundation                      0x000000010198bd21 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
      13  CoreFoundation                      0x000000010198b5f2 __CFRunLoopDoSources0 + 242
      14  CoreFoundation                      0x00000001019a746f __CFRunLoopRun + 767
      15  CoreFoundation                      0x00000001019a6d83 CFRunLoopRunSpecific + 467
      16  GraphicsServices                    0x0000000103b29f04 GSEventRunModal + 161
      17  UIKit                               0x0000000100308e33 UIApplicationMain + 1010
      18  We Love HK                          0x00000001000045b3 main + 115
      19  libdyld.dylib                       0x000000010207f5fd start + 1
  )
  libc++abi.dylib: terminating with uncaught exception of type NSException
  (lldb) 
  </code></pre>
  
  <p>Also i want to know how can i set the splitViewController.delegate from a different place?</p>