在我的iOS應用程序中,我嘗試呈現當前新的ViewController「above」。繼this蘋果方針,在一些事件中,我使用下面的代碼:iOS - 用presentViewController呈現ViewController:不起作用
MyViewController* vc = [[MyViewController alloc] initWithNibName: nil bundle: nil];
vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
UINavigationController* nc = [[UINavigationController alloc] initWithRootViewController: vc];
[mainController presentViewController:nc animated:YES completion:nil];
該代碼被稱爲(和它發生主控制器加載成功後,未在viewDidLoad中)和新觀點出現使用選擇過渡方式。
已創建MyViewController類,並且它的方法(如viewDidLoad和supportedInterfaceOrientations)已成功調用。
現在問題來了。
在界面生成器中,我創建控制器,將其類設置爲MyViewController。例如,我在這個控制器裏創建了一些視圖,UIButton。 MyViewController有屬性
IBOutlet UIButton* button
在故事板上,放置的UIButton的引用出口設置爲控制器的「按鈕」屬性。作爲一個雙重檢查,在故事板上的視圖控制器的「Outlets」部分,「button」綁定到放置的UIButton對象。
但是,當調用viewDidLoad
時,button屬性的值爲零。自然,按鈕不顯示。這同樣兩個UITableView
對象(它們的數據源和委託都設置爲相同的視圖控制器和MyViewController符合
<UITableViewDelegate, UITableViewDataSource>
的情況下,這一點很重要)。
此外,出現的黑色屏幕忽略所有觸摸(並且滑動手勢識別器放置在故事板上的控制器上)。但它對方向變化作出反應。
我想問題是MyViewController創建的實例無法「看到」故事板,我錯過了一些非常基本的東西,但我在蘋果文檔中看不到任何提示。
只要'[[MyViewController alloc] init]'它應該自動拾取正確的nib/bundle。 –
@MikeWeller不,它沒有。 init實際上導致調用initWithNibName:Bundle:兩個參數都是零。 – Abstraction
我只是說它更簡單和更清潔(恕我直言)。 –