2013-10-07 83 views
-1

好吧,我在我的一個功能中遇到的問題是,當用戶通過Facebook登錄時,我的應用程序正在檢查他們的Facebook用戶名是否已經存在於我們的應用程序(Parse.com)數據庫中。來自NSObject的PresentViewController?

如果是這樣,請提供一個視圖控制器(這是我遇到問題的地方,因爲這是一個NSObject),如果沒有,只需編寫他們的Facebook用戶名解析用戶名字符串。錯誤我得到的是:對於選擇沒有已知的類方法「presentViewController:動畫:完成」

這裏是我的代碼:

PFQuery *query = [PFUser query]; //1 
[query whereKey:@"username" equalTo:me.username];//2 
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {//4 

    if (!error) { 
     NSLog(@"Successfully retrieved: %@", objects); 

     if ([objects count] > 0) 
     { 
      // LOOKING TO PRESENT VIEW CONTROLLER HERE? 
      // TRIED: 
      // [self presentViewController:[@"RegisterUsername" animated:YES completion:nil]; 


     } else { 
      [[PFUser currentUser] setObject:me.username forKey:@"username"]; 
     } 
    } else { 
     NSString *errorString = [[error userInfo] objectForKey:@"error"]; 
     NSLog(@"Error: %@", errorString); 
    } 
}]; 

而且由於這是從NSObject的繼承,它不會允許我使用presentViewController。不知道從這裏還有什麼要做。 :-(此視圖控制器將讓他們設置一個用戶名,然後再繼續我們的應用程序。此代碼目前在一個標頭的登錄功能爲Facebook iOS SDK的NSMJSECT(NSOBJECT)

+0

我想我已提交一次編輯(修復代碼格式)與您同時進行,並且可能已經擦除了上次的編輯。你可以仔細檢查最後一段嗎? – Gray

+0

您需要對當前視圖控制器的引用。在某些情況下,您可以通過設置一些'weak''delegate'屬性或者將它作爲您擁有此代碼的方法的參數,將對當前視圖控制器的引用傳遞給此對象。 – Rob

回答

1

NSObject不聲明方法presentViewController:。你需要添加一個UIViewController子類到窗口,然後從這裏展示在dismissViewController的完成塊中,你應該從窗口中刪除父窗口

或者你可以創建一個委託協議來檢查用戶名,然後通知UIViewController需要內部設置用戶名或提供登錄視圖。

+0

不確定你是什麼意思,因爲我通常是iOS開發的新手。任何正確方向的例子或要點都會很棒。 – Belvedare

+0

除了註釋掉之外,你現在的代碼已經很好地佈置了。如果你自己輸入所有這些,我印象非常深刻(如果你通常是iOS的新手)。另一方面,如果您只是複製並粘貼了這些內容,並試圖找出後續步驟,請稍後退後一步,嘗試「閱讀」代碼並遵循它,以確保您完全理解要執行的操作在每一行中。在我們走得更遠之前,我想確保你真正瞭解你將學習的內容,而不是僅僅複製和粘貼。我們有很多事要過去。 – Justin

+0

是的,先生,我明白我寫的所有代碼都在做什麼。我最終確實修復了所有內容,但在登錄後在初始viewController加載的viewDidLoad上調用了它。我現在所做的一切似乎都很順利。現在想出如何正確添加UITabController .. -.- – Belvedare

相關問題