簡體   English   中英

viewController在出現時顯示為黑色

[英]viewController appearing black when appearing

大家好我是iOS開發的新手,目前我遇到了一些問題,如果用戶沒有登錄,我正在嘗試以模態方式顯示登錄表單。

我正在使用NSUserDefaults存儲一個id,我只是檢查它是否存在。 如果它沒有,那么我希望UIViewController出現。

到目前為止,我在UINavigationController中有以下代碼,它位於UITabViewController中,我試圖讓UIViewController出現在第一個UINavigationController(被選中的那個)之上,在動畫發生的那一刻但是只有一個即使登錄屏幕已經創建了所有相關的文本框等,也會出現黑屏。 如果我將此登錄屏幕設置為要加載的初始視圖,則會加載正常。

這是出現在UINavigationController的First viewcontroller中的代碼。

 NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
if (![prefs stringForKey:@"id"]){
    LoginViewController *loginController = [[LoginViewController alloc] init];
    [self presentModalViewController:loginController animated:YES];
} else {
    [self loadCoffeeUserOrders:[prefs stringForKey:@"id"]];  
}

模態視圖正在加載,但目前它只是顯示黑色,我嘗試創建一個新的登錄屏幕,同樣的事情發生:只有一個黑屏。

希望有足夠的信息讓某人了解可能發生的事情,我對iOS開發很新,所以如果我犯了一些錯誤,那么知道我哪里出錯了會很好。

謝謝

因此,您在此處創建的LoginViewController與您在故事板中設置的實例不同。 我想你想要在故事板中加載和呈現的那個。

最簡單的方法是在故事板中創建一個segue,從第一個視圖控制器到您在那里創建的登錄視圖控制器。 您可以從一個視圖控制器按住Ctrl鍵拖動到另一個視圖控制器,然后選擇“模態”作為segue的類型。 然后轉到該segue的檢查員並給它一個標識符。 假設你稱之為“segueToLogin”。

然后從你的代碼執行segue只需執行以下操作:

  if (![prefs stringForKey:@"id"]){

    [self performSegueWithIdentifier:@"segueToLogin" sender:self];

  }

希望有所幫助。

編輯

所以只是回答你的問題,想象一下:

你有一個應用程序的好主意,所以你從你的墊上拿一張紙,你勾勒出這個偉大的設計。 然后你的同事過來,所以你撕下一張新的空白紙,然后向他們展示。 他們不會留下深刻的印象。

同樣的事發生在這里。 您在故事板中設置了包含所有視圖的視圖控制器。 但是當它到了顯示它的時候,你拿出一個新的完全空白的視圖控制器並向用戶顯示。 通過拉動和啟動segue,您最終會加載所需的實際視圖控制器實例。

現在在segues上,您可以在故事板中創建這些內容,以允許用戶在場景中導航。 有時這些segue直接連接到按鈕或其他東西。 但在這種情況下,您不希望要求用戶按下按鈕或其他內容來顯示登錄vc,因此您自己正在執行segue。

希望有道理。

我有一個類似的問題,但決議不是上面列出的那個。 問題出現在實際的新視圖控制器“.m”文件中(我正在嘗試推送/模態打開的文件)。 里面有一個叫做loadView的方法,如果你把它留在那里,XCode會忽略你在故事板中的xib,並期望你布局視圖。 刪除該功能,它將查看xib。

在這個愚蠢的錯誤上花了太長時間,希望這可以幫助拯救別人的理智。

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
LoginViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"];
[vc setModalPresentationStyle:UIModalPresentationFullScreen];
[self presentModalViewController:vc animated:YES];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM