2009-11-02 69 views
2

我有一個iPhone應用程序,我基於教程(對於不同的框架,所以我不得不修改一些東西),使用TabBar和NavigationBar在相同的視圖,也包含一個從SQLite數據庫填充的UITable。 昨天晚上我創建它,當你在UITable中選擇一個項目時,它被重定向到一個顯示我的項目的細節(此時,只是一個城市名稱)的視圖。我進去試圖修改那個DetailView ...而我沒有改變作品。 所以,我有幾個問題/問題: 1)爲什麼我的CityDetailView.xib看起來像這樣在Interface Builder:無法理解iPhone的視圖佈局

alt text http://www.jamespwright.com/images/public/detailviewinterfacebuilder.jpg

但是,當應用程序運行是這樣的:

alt text http://www.jamespwright.com/images/public/wrongdetailview.jpg

我是iPhone開發新手,所以我甚至不知道從哪裏開始尋找這個問題。 我知道TableViewController設置爲CitiesTableViewController在我didSelectRowAtIndexPath方法是控制器代碼中運行此代碼:

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 
City *city = (City *)[appDelegate.cities objectAtIndex:indexPath.row]; 

// Initialize a new CityDetailView if there isn't one already 
if (self.cityView == nil) { 
    CityDetailViewController *viewController = [[CityDetailViewController alloc] initWithNibName:@"CityDetailViewController" bundle:[NSBundle mainBundle]]; 

    self.cityView = viewController; 
    [viewController release]; 
} 

[appDelegate.citiesNavController pushViewController:cityView animated:YES]; 
self.cityView.city = city; 
self.cityView.title = city.name; 
[self.cityView.cityName setText:city.name]; 
[self.cityView.stateName setText:city.state]; 
[self.cityView.population setText:city.population]; 

而且我有在Interface Builder連接起來,以在控制器的屬性標籤。 我也有CityDetailView.xib類標識設置爲CityDetailViewController,它具有正確聲明的所有屬性。 有一件事我無法弄清楚,如果我將CityDetailView.xib重命名爲「CityDetailView.xib1」,程序仍然運行相同,但是如果我更改[self.cityView.title = city.name]; to [self.cityView.title = @「鮑勃的你的叔叔!」];它會在程序中顯示該更改。

在一個完全不相關的筆記上,在我的TableView(我的第二個標籤)上我有這個奇怪的底部,我不知道它是什麼或如何擺脫它,我很確定它有關於NavigationController,但我不知道爲什麼或如何在那裏。正是這一個:

alt text http://www.jamespwright.com/images/public/tabandnavigationview.jpg

誰能給我提供的這些問題有什麼建議?

回答

1

當「什麼也沒發生」當你改變的源文件,通常只有你做幾件事情:

  • 日期的地方搞砸了,你需要清潔(建→清潔)
  • 你編輯了錯誤的文件
  • 你建立了錯誤的目標
  • 沒有,嚴重的是,你正在編輯的錯誤的文件,或建立了錯誤的目標

清潔絕對是第一次嘗試。特別是如果你可以重命名XIB,並且所有事情都會繼續愉快地繼續下去。

+0

清潔工作完美尼克。萬分感謝! 現在我只需要弄清楚底部是什麼灰色條以及如何擺脫它。 – 2009-11-02 23:26:19

0

最簡單的解釋是,self.cityView.stateName和後續標籤沒有在界面構建器中掛鉤。控制器必須有一個連接到每個標籤的出口以填充它。如果你發送消息給它找不到的對象,Objective-C不會引發錯誤。