2012-05-05 22 views
2

我想打開一個特殊的viewController,如果它是用戶第一次在我的應用程序。在其他情況下,我已經得到了這個工作,但由於某種原因,它現在不能工作。我試過兩種不同的方法,但都沒有工作。我嘗試的第一件事是檢查,並直接從appDelegate做...然後我試着檢查它是否是第一次從根視圖控制器的viewDidLoad方法,如果它是第一次調用seque打開一個特殊的註冊頁面。 Niether工作,我不知道爲什麼.....這裏是我使用的一些代碼:以編程方式調用segue不工作

這是在rootviewcontroller裏面。當我這樣做的時候,它會在日誌上打印出「Main is First Time」,所以我知道它在那裏。我仔細檢查了在故事板SEGUE和其名稱正確並且去,並從正確的地方....

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
    if([appDelegate firstTime]) 
    { 
    [self performSegueWithIdentifier:@"mToRegister" sender:self]; 
     NSLog(@"Main is First time"); 
    } 
    // Do any additional setup after loading the view. 
} 

中的appDelegate內部:

* NSUserDefaults的standardUserDefaults = [NSUserDefaults的standardUserDefaults]
BOOL haveused = [standardUserDefaults boolForKey:@「haveused」];

if(haveused){  
    //NOT THEIR FIRST TIME 
    //Handle scenario 
    firstTime = NO; 

    NSString* guid = [[NSMutableString alloc]initWithString:[self getMacAddress]]; 
    //interest = [appDelegate interest]; 

    NSString *splitter = [[NSString alloc]initWithString:@"&"]; 
    NSMutableString *post = [[NSMutableString alloc]initWithString: @"user_read=1&guid="]; 
    [post appendString:guid]; 
    NSLog(@"String for Post is %@", post); 
    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 
    NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; 
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
    [request setValue:@"Basic ==" forHTTPHeaderField:@"Authorization"]; 
    [request setURL:[NSURL URLWithString:@"http://something.com/app/usercrud.php"]]; 
    [request setHTTPMethod:@"POST"]; 
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
    [request setHTTPBody:postData]; 

    theConnection = [[NSURLConnection alloc]initWithRequest:request delegate:self]; 
} 
else { 
     NSLog(@"This is the First time"); 
     firstTime = YES; 
     //THEIR FIRST TIME 
     //Handle scenario 



//  UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" 
//                 bundle: nil]; 
//   
//  UIViewController *controller = (UIViewController*)[mainStoryboard 
//               instantiateViewControllerWithIdentifier: @"register"]; 
//  UIViewController *root = (UIViewController *)self.window.rootViewController; 
//  [root presentModalViewController:controller animated:YES]; 
     [self.window.rootViewController performSegueWithIdentifier:@"mToRegister" sender:self];   

    } 

任何爲什麼它不會工作思路?如果沒有人知道更好的方法來處理這種情況?

回答

0

我的事情你的應用程序委託管理不當,使用NSDefaults來存儲唯一的身份,並檢查下一次啓動,如果存在於NSDefaults那麼這是不是第一次,如果它不存在,這不是第一次。測試是否存在,如果仍然存在,然後從應用程序代理髮布您的if部分

+0

我檢查了,nsdefaults工作正常......我會通過 – Rmyers

+0

發佈IF部分吧?你的問題解決了嗎? – Saad

+0

不......用戶默認值正常工作。它完全確定它是第一次與否,我似乎無法加載一個不同於根視圖控制器的頁面,如果這是第一次...那就是我的問題 – Rmyers

0

您使用的是什麼樣的segue?一種模式?我相信推動需要一個導航控制器是爲什麼我問。

您在viewDidLoad中爲RootViewController 使用的代碼應該工作,因爲我想在用戶登錄到我的應用程序時做類似的事情。所以我唯一的問題是如何設置segue並確保它是有效的。

也許嘗試刪除segue並重新創建它?

也是問題的主題,但最好不要在AppDelegate本身中放置很多代碼,最好將其重構爲單獨的對象/單例。

+0

感謝您的意見,我明白了:) – Rmyers