2012-09-27 55 views
5

我最近將我的XCode升級到了4.5版,現在我在嘗試將應用程序開發到iOS 5.0/5.1時遇到問題。使用XCode 4.5運行iOS 5.1模擬器的問題

我開發了一個簡單的iPad遊戲,用戶需要將圖像與相應的單詞相匹配。所有這些項目都存儲在UIImageView中,如果這是相關的。支持的界面方向僅爲橫向。

當我使用iPad 6.0模擬器運行我的應用程序時,一切正常,沒有任何問題。但是當我嘗試使用5.1運行它時,一切都出錯了。圖像沒有出現,我的背景圖像出現橫向和重複。狀態欄也顯示錯誤:設備方向是橫向,但側欄出現在右側。這在我使用6.0模擬器時也不會發生。

在項目詳情中,我已將iOS部署目標更改爲5.1以及故事板。使用iOS 5.1部署目標故事板不會讓我選擇「使用Autolayout」選項,因此我取消選擇此選項。這是由這個選項造成的嗎?

我已經嘗試在設備中運行我的應用程序,但結果是一樣的。由於我安裝了XCode 4.5,我開始遇到這些問題,例如我甚至無法在iOS 5.x模擬器中正確運行「Master-detail Application」模板,因爲當我點擊「Add」按鈕時它會崩潰。

我是否缺少運行使用SDK 6創建的5.x應用程序的東西?我已經在很多論壇上搜索過,但我還沒有找到任何解決這類問題的方法。我很樂意聽取任何建議,因爲我已經在這個問題上花費了很多時間,而且我的選擇已經不多了。

[編輯]:我記得一個細節,可能與這個問題有關:我的故事板視圖是一個自定義視圖。我創建了一個從UIView擴展的類,以便我可以重寫drawRect函數來在我的對象之間繪製線條。然後在Storyboard中,在View中,我只在Custom Class - > Class中選擇了我的類。

我注意到,當我運行5.1模擬器時,狀態欄最初出現在頂部,然後窗口加載時它向右。

如果你想知道任何其他細節,請問我。

非常感謝。

回答

2

您是否檢查過故事板以確保您關閉了Autolayout? Autolayout只適用於iOS6。在Interface Builder Document下的File Inspector Area中查看視圖控制器時可以找到此選項。這是一個複選框

+0

是的,正如我在最初的問題中所述,我關閉了Autolayout。如果選中此選項,XCode甚至不讓我使用5.1模擬器運行項目。 – fabioalmeida

+0

我注意到要保持5.1模擬器中的橫向方向,我需要重寫View Controller中的shouldAutorotateToInterfaceOrientation方法,但是我在Storyboard中定義的圖像仍然不出現。我是否需要改變其他的東西,以便它能像5.1一樣在5.1模擬器中正常工作? – fabioalmeida

4

英語不是我的母語,所以請原諒我的語法...

至於你的主 - 「添加」按鈕的問題,這是爲我工作。

從我可以告訴,因爲應用程序崩潰:

[UITableView dequeueReusableCellWithIdentifier:forIndexPath:]: unrecognized selector sent to instance 

快速幫助說:

- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath declaration is only available in iOS (6.0 and later). 

於是,我改變MasterViewController.m代碼:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; 
    [self configureCell:cell atIndexPath:indexPath]; 
    return cell; 
} 

適用於Xcode在舊版本中使用的代碼:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 

    } 
    [self configureCell:cell atIndexPath:indexPath]; 
    return cell; 
} 

希望這會有所幫助。