2011-09-15 51 views
0

這是我在這裏的第一篇文章,雖然在這個社區的成員的許多問題和答案的幫助下,我已經使我的項目接近完成。諷刺地推空白視圖控制器

我已經閱讀了多個類似於我所要求的線程,但方法完全不同。到目前爲止,沒有任何代碼可行

基本上(我這樣說是因爲我的代碼涉及到可愛的蛇一樣陷入繁亂,但適用的片段將根據要求掛上),我的問題是,我打電話

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

它推動我的視圖控制器在模擬器和NSLogs我需要改變的字符串漂亮,但它推動一個空白的看法!該運行的代碼使視圖控制器變量是一個常量:

UIViewController *viewController = [[xSheetMusicViewController alloc]initWithNibName:nil bundle:nil]; 

所以我想,我自己,我在做什麼!?所以我回到了舊方法,它涉及使UIViewcontroller成爲if-then,if-else-then語句,根據是否選擇某些行(標準內容)來推送不同的視圖。當我的字符串完全加載時,它推動了一個新的視圖,但它只是NSLog'ed一個字符串一遍又一遍!最糟糕的部分是當我嘗試返回到rootviewcontroller時,我的應用程序會調用SIGABRT或EXC_BAD_ACCESS。 (這裏的適用代碼):

UIViewController *viewController = [[[UIViewController alloc]init]autorelease]; 
if (indexPath.row == 0 && indexPath.section == 0) { 
    appDelegate.baseURL = @"mussette.pdf"; 
viewcontroller = [[xSheetmusicViewController alloc]initwithnibname:nil bundle:nil]; 
} 
else if (...) 
//pushview, changestring, blah blah// 

現在,我寧願我的觀點推動PDF喜歡它應該,並且具有正確的字符串值(和不給我SIGABRT或EXC_BAD_ACESS,但這些都是吉文斯) ,但似乎妥協是不可及的。我知道我可能會用一行代碼來解決這個問題,但現在看起來似乎沒有希望了。

在此先感謝。

編輯:要回答你所有的問題,是的,在下一個視圖中沒有xib,而是 (id)init 方法。

編輯2:回答lostInTransit的請求,並添加一些額外的細節:

<else if (indexPath.row == 1 && indexPath.section == 0) { 
    appDelegate.baseURL = @"Importing PDF's.pdf"; 

另外,如果有幫助,將輸出保持記錄: 應用程序嘗試對目標推零視圖控制器。

當我嘗試從tableviewcell中推送視圖,並且它在加載PDF權限之前這樣做,所以我忽略了它。

+0

你爲什麼要調用initWithNbName:nil?你有沒有使用接口構建器的XIB?如果你是,爲什麼不用@「myXibFileName」調用? – bryanmac

+3

FWIW,如果您傳遞'nil'作爲筆尖名稱,它會自動尋找與視圖控制器類相同的筆尖。 –

回答

2

問題:爲什麼你首先將你的viewController初始化爲一個UIViewController,然後再作爲xSheetmusicViewController?我認爲問題在於正確釋放值。在一個初始化中,你做一個autorelease,而另一個你不做。所以你有可能會發布兩次導致不良訪問的變量。

你介意在最後一段代碼中發佈「blah blah」:)嗎?

+1

感謝您的建議。我只希望我能投票,但現在,你只需要解決複選標記;) – CodaFi

0

您的應用程序中是否有名爲xSheetmusicViewController.xib的文件?在調用[[xSheetmusicViewController alloc] initNithNibName:nil bundle:nil];(它將在第一次訪問視圖屬性時它實際上會被加載)之後,它將作爲其所有者加載到視圖控制器中。如果該文件不存在,則將調用視圖控制器的-loadView:方法來加載其視圖。

如果你有一個空白的視圖,或者你有一個空白或錯誤​​的筆尖(也許你重命名類但不是筆尖?),或者你沒有在-loadView:創建正確的視圖。