[英]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.