我試圖按照Table View Programming Guide for iPhone OS,但無法創建一個新的表視圖控制器,從nib文件加載它的數據。創建一個表視圖控制器的筆尖文件
具體來說,我試圖按照this part步驟:
如果你願意來加載從筆尖文件通過自定義表視圖管理 控制器表視圖 ,你必須 做如下:
- 在Interface Builder中,創建一個空的Cocoa Touch nib文件(文件> 新建)。
- 將UITableViewController對象從Interface Builder 庫拖到nib文檔窗口中。
- 將nib文件保存在您的項目目錄下,名稱爲 ,並在出現提示時選擇您的 項目以將nib文件添加到 它。
- 在筆尖文檔窗口中選擇Table View Controller,然後打開檢查器的Identity窗格。將 設置爲您的自定義表格視圖 控制器類。
- 在筆尖文檔窗口中選擇文件所有者,並將其類別 標識設置爲自定義表格視圖 控制器類。
- 在Interface Builder中自定義表格視圖。
- 選擇筆尖文檔窗口表視圖控制器,打開檢查的 屬性面板,並 輸入(或選擇)在筆尖名稱字段筆尖 文件的名稱。
因此,我創建在Xcode中新的UITableViewController子類(稱爲「MyTableViewController」),然後我進入IB和遵循這些步驟。我確保將所有類屬性鏈接到與我在Xcode中製作的UITableViewController子類相同的名稱,就像它在步驟中所述。
但現在我得到以下警告在IB:
「我的表視圖控制器」既有 「查看」和「筆尖名稱」屬性中設置。 不支持此配置。
當我運行應用程序並推送表視圖控制器,它出現,但似乎沒有什麼是從nib文件加載(例如我設置爲0而不是1)。
任何想法,我做錯了什麼?
感謝您的幫助。
以下是一些可幫助您更好地瞭解情況的更多信息。
我注意到創建一個UITableViewController與模板(例如通過創建一個新的基於導航的應用程序)與自己創建一個(例如,遵循上述步驟)之間的一些差異。我將分別稱爲TemplateNib和CustomNib,以便更容易理解這些差異。
在TemplateNib,它在文檔窗口中的下列對象:
- 文件的所有者
- 急救員
- 表視圖
在CustomNib,它在下列對象文件窗口:
- 文件的所有者
- 急救員
- 我的自定義表視圖控制器
- 表視圖
另一個不同之處是在文件的所有者聯繫...
TemplateNib的文件的所有者:
- 奧特萊斯
- 的tableView - >表視圖
- 視圖 - >表視圖
- 引用奧特萊斯
- 數據源 - >表視圖
- 委託 - >表格視圖
CustomNib文件的所有者:
- 奧特萊斯
- 視圖 - >(無)
CustomNib我的表視圖控制器:
- 奧特萊斯
- 視圖 - >表視圖(這是灰色的,所以你不能刪除)
- 引用奧特萊斯
- 數據源 - >表視圖
- 委託 - >表視圖
更新:
我試圖模仿由templat創建的.xib文件e通過以下步驟:
- 在Interface Builder中創建一個空文件。
- 將文件所有者設置爲從UITableViewController繼承的類。
- 在文檔窗口中添加了一個表格視圖。
- 將表視圖的dataSource和委託設置爲文件的所有者。
- 將文件的所有者視圖設置爲表視圖。
- 在類型的Identity窗格中添加了tableView propery UITableView。
- 將文件的所有者tableView屬性(我剛剛創建)設置爲表視圖。
但是,這似乎仍然不是從NIB文件加載它。 (我也從來沒有設置NIB文件的名稱,儘管...有沒有什麼地方需要設置它,或者它是否在尋找一個具有相同名稱的文件?)。
然後,我嘗試覆蓋initWithNibName從nib文件的名稱加載,現在它好像從nib文件加載它。但是,如果我看看。m文件的TemplateNib表視圖控制器,它不需要重寫此方法,爲什麼?我仍然認爲我做錯了,因爲編程指南沒有提到這樣做的任何事情。
更新:
我試圖用比較一個diff工具兩個文件的.xib,兩者之間的唯一區別顯著似乎是:
<string key="superclassName">UITableViewController</string>
// and:
<reference key="NSSuperview"/>
我沒有看到任何在任何地方引用原始文件中的Nib文件,是否還有其他文件需要檢查?
更新:
好像使TemplateNib負荷從筆尖文件的事情是,在MainWindow.xib中(由模板給出的默認名稱),該RootViewController的添加與NIB名稱具有值「RootViewController」的屬性。另外,它的類被設置爲「RootViewController」。
我試着在initWithNibName:bundle:和initWithStyle:在RootViewController上放置一個斷點,但是它永遠不會到達那裏。我有點想知道如何在MainWindow.xib中設置TableViewController。
我也嘗試添加我的自定義表視圖控制器到MainWindow.xib,設置類和筆尖名稱,希望它會從我指定的筆尖文件加載它,但它甚至不會調用iniWithNibName。
我剛剛遇到同樣的錯誤。有沒有人找出修復文件而不重新創建的方法? – 2009-10-22 19:27:54
謝謝,非常的Userful – goe 2012-06-12 11:24:15