簡體   English   中英

iOS - Interface Builder Outlets未初始化

[英]iOS - Interface Builder Outlets Not Initialized

我在Interface Builder中創建了一個視圖,其中一些標簽和文本作為IBOutlets。 當我從我在Storyboard中定義的另一個視圖中刪除它時,我可以完美地查看此屏幕。 但是,我有另一個XIB和一個關聯的UIViewController,我想從中訪問該視圖。 因為我的XIB不在故事板中,所以我不能理解它。 相反,我必須以編程方式執行轉換。

    PlantDetailViewController *plantDetailVC = [[PlantDetailViewController alloc] init];
    [self.currentNavigationController pushViewController:plantDetailVC animated:YES];

執行此代碼時,它將轉換為視圖,但視圖只是空白。 我已經調試了代碼,它進入了viewDidLoad和viewWillAppear但是我所有的IBOutlets都是NIL ....所以它沒有出現在屏幕上!

任何人都可以告訴我為什么他們可能是NIL以及我如何初始化它們?

謝謝

布賴恩

這聽起來像你說你有一個PlantDetailViewController在你的故事板設置,以及一些OtherViewController這是你的故事板之外創建的。 現在您希望OtherViewController實例化在故事板中設置的PlantDetailViewController

假設您的故事板名為MainStoryboard.storyboard

首先,您需要在故事板中設置PlantDetailViewController的標識符。 您可以在“屬性”檢查器的“視圖控制器”部分下執行此操作。 假設您將其設置為PlantDetail

然后,在OtherViewController ,這應該工作:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
PlantDetailViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"PlantDetail"];
[self.currentNavigationController pushViewController:vc animated:YES];

-init不為你加載一個nib文件,如果你想加載一個nib使用-initWithNibName:bundle:

如果使用nib命名約定,則可以傳遞nil以加載名稱與您的類和默認包匹配的nib,即[[PlantDetailViewController alloc] initWithNibName:nil bundle:nil] ,有關詳細信息,請參閱-nibName的文檔。

暫無
暫無

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

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