2013-03-15 42 views
0

程序基本上只是應該在兩個視圖之間切換。我正在嘗試學習如何製作多視圖應用程序。具有兩個視圖的iOS應用程序。它崩潰,但不給我一個錯誤

{ 

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
// Override point for customization after application launch. 
self.window.backgroundColor = [UIColor whiteColor]; 
[self.window makeKeyAndVisible]; 

FirstViewController *aView = [[FirstViewController alloc]initWithNibName:@"FirstViewController" bundle:nil]; 
self.firstView = aView; 
[window addSubview:firstView.view]; 

self.window.rootViewController = aView; 

return YES; 

} 

我得到一個錯誤說「應用程序預計將有在應用程序啓動的最後一個根視圖控制器」。我添加了一行「self.window.rootViewController = aView;」那個錯誤消失了。現在,我的應用程序將從視圖1切換到視圖2(它總是能夠做到這一點),但當試圖切換回它會崩潰。我得到的唯一結果是「(11db)」。它帶我到一個屏幕,一堆內存地址,並強調綠色如下:

0x10dc09b: movl 8(%edx), %edi 

和它說:「主題1:EXC_BAD_ACCESS(代碼= 2,地址)」

我不知道如何解釋這個輸出。我在YouTube上跟蹤了一系列視頻指南來創建此程序。我做了兩次,以確保我做的一切都正確(我做到了)。如果你願意我所做的一切,這些指南被稱爲「Xcode tutorial#3 part 1/3:Multiview Applications」。

我令人難以置信的困惑。沒有人似乎有問題。

+0

你如何在視圖之間切換? FirstViewController替換故事板中創建的一個嗎? (順便說一句,你不需要這行:[window addSubview:firstView.view])。 – rdelmar 2013-03-15 04:42:01

+0

你不需要爲'UIWindow'添加一個子視圖,設置'rootViewController'爲你做。我建議將你的子視圖添加到你的'FirstViewController'的'view'中。 – Espresso 2013-03-15 04:43:38

+0

@rdelmar我先進的道歉。我不知道如何格式化我的回覆。我有兩個視圖,每個視圖都有一個按鈕。這些按鈕連接到名爲'swapViews'的方法,其中每個方法都包含以下代碼:' - (IBAction)swapViews:(id)sender TeststandsAppDelegate * delegate =(TestViewsAppDelegate *)[[UIApplication sharedApplication] delegate]; FirstViewController * firstView = [[FirstViewController alloc] initWithNibName:@「FirstViewController」bundle:nil]; [delegate switchViews:self.view toView:firstView.view]; }' – user2172509 2013-03-15 04:44:16

回答

0

在你的窗口可見之前,你應該設置它的根視圖控制器。

試試這個:

{ 

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
// Override point for customization after application launch. 
self.window.backgroundColor = [UIColor whiteColor]; 


FirstViewController *aView = [[FirstViewController alloc]initWithNibName:@"FirstViewController" bundle:nil]; 
self.firstView = aView; 

self.window.rootViewController = aView; 

[self.window makeKeyAndVisible]; 

return YES; 

}

如果你想看到的多個視圖,然後在你的RootViewController的的 * viewDidLoad中寫狀態*您可以重定向到另一個視圖。

你還有任何疑問只是告訴我。

所有最好的!

+1

中的代碼中看到此代碼,您的代碼與我的代碼看起來完全一樣。我沒有看到任何區別。我複製/粘貼你的代碼,並且沒有任何改變。我試着移動下面我分配了rootViewController的[self.window makeKeyAndVisible],但是這繼續給我一個錯誤。 – user2172509 2013-03-15 04:38:52

+0

對不起。我已經更新了答案,請立即檢查。 – Yashesh 2013-03-15 04:45:17

+0

不幸的是我仍然收到相同的錯誤。我沒有得到任何輸出,但它凍結在一個頁面上,顯示了很多內存地址和與上面相同的代碼行。 – user2172509 2013-03-15 04:46:56

相關問題