2009-11-23 136 views
0

應用說明:我在它下面有一個UIWebview和一個工具欄。工具欄上的按鈕應該顯示一個模態表格視圖,但不是。iPhone ModalViewController對於表視圖按鈕打開?

工具欄有四個按鈕:

上:轉到以前的網站

下一頁:進入到下一個站點(這兩個是不同於默認goForward和GoBack的方法)

菜單:用所有可用站點的TableView顯示一個modalViewController(站點將被限制爲下一個和上一個按鈕週期通過的站點鏈接陣列)

刷新:刷新當前站點

應用具有四個主要的類/文件

WebAppDelegate.h和.M

ListViewController.h和.M(其具有在其XIB表視圖和代碼來填充表中.m /是模態視圖控制器)

只有一個警告,沒有錯誤。

警告:「WebAppDelegate」可能不repsond爲「-presentModalViewController:動畫:」

當我運行程序,一切都很好,直到我點擊菜單按鈕。我收到此運行時錯誤

[WebAppDelegate presentModalViewController:animated:]: unrecognized selector sent to instance 

下面是菜單按鈕的代碼,這是目前在WebAppDelegate.m

-(IBAction)menu:(id)sender { 
ListViewController *aListView=[[ListViewController alloc] initWithNibName:@"ListViewController" bundle:[NSBundle mainBundle]]; 
[self setListController:aListView]; 
aListView.modalTransitionStyle=UIModalTransitionStyleCoverVertical; 
[self presentModalViewController:aListView animated:YES]; 
[aListView release]; 
} 

是什麼原因導致應用程序的任何想法崩潰以及爲什麼模態表視圖不顯示?

回答

4

錯誤消息告訴你到底你的問題是什麼 - 你正在發送一個選擇器給一個不響應該選擇器的對象。

[self presentModalViewController:aListView animated:YES]; 

self在這種情況下,你的WebAppDelegate的實例,這可能NSObject的一個子類,而不是UIViewController中。 presentModalViewController:animated:是UIViewController上的一種方法,因此如果要以模態方式呈現另一個視圖控制器,則需要將該消息發送給當前顯示的任何視圖控制器(或者可能是導航控制器)。

不要忽略編譯器警告 - 一個警告你很可能告訴你......

'WebAppDelegate' may not respond to '-presentModalViewController:animated:' 

...這又恰好是你的問題。

1
[self.navigationController presentModalViewController:aListView animated:YES]; 
+1

不確定他在哪裏暗示他有導航控制器。如果有的話,我會願意打賭,他沒有一個,並沒有幫助給出一個可能令人困惑的答案,因爲它沒有完全解釋。 – 2009-11-23 21:56:20

+0

這工作,現在有一個新的運行時錯誤(沒有其他編譯時錯誤或警告):「終止應用程序由於未捕獲的異常'NSInternalInconsistencyException',原因:' - [UITableViewController loadView]加載了」ListViewController「 t獲取UITableView。'「 表視圖代碼中有些錯誤,但至少在進展。 – LoganFrederick 2009-11-23 22:03:15

+0

SBrocket是正確的,我沒有導航控制器。我用self.listController,這可能仍然是錯誤的方法。 – LoganFrederick 2009-11-23 22:04:35