2009-06-25 39 views
0

我有一個XIB文件有一個UITextView,我正與一個UITextView *插座在我的控制器關聯:NSException拋出加載XIB文件與一個UITextView

@interface MyController : UIViewController <UITextViewDelegate> { 
    IBOutlet UITextView *textView; 
} 

@property (nonatomic, retain) IBOutlet UITextView *textView; 

我交鋒在絕望原型,我還沒有實現委託的任何方法。

我的視圖是從我的主XIB文件中定義的標籤欄加載的。當我點擊相關的標籤欄按鈕時,立即拋出異常(在任何控制器方法被調用之前)。調用堆棧的頂部看起來像這樣(來自調試器):

#0 0x93829bc6 in -[NSException raise] 
#1 0x9157f8f8 in _NSSetUsingKeyValueSetter 
#2 0x9157f35e in -[NSObject(NSKeyValueCoding) setValue:forKey:] 
#3 0x91603f81 in -[NSObject(NSKeyValueCoding) setValue:forKeyPath:] 
#4 0x30c1fadb in -[UIRuntimeOutletConnection connect] 
#5 0x9381ebe5 in -[NSArray makeObjectsPerformSelector:] 
#6 0x30c1e629 in -[UINib instantiateWithOptions:owner:loadingResourcesFromBundle:] 
#7 0x30c2068c in -[NSBundle(NSBundleAdditions) loadNibNamed:owner:options:] 
#8 0x30ac6f26 in -[UIViewController _loadViewFromNibNamed:bundle:] 

看來設置文本視圖插座時出現了一些問題。我確定它與UITextView有關,因爲如果我註釋掉與文本視圖相關的代碼並從XIB中刪除文本視圖,則視圖加載正常。控制檯上沒有可用的錯誤消息。

在IB中創建UITextView元素時是否有特殊注意事項?我已經將它連接到我的代碼中的IBOutlet,並將委託設置爲「文件所有者」(我也嘗試過不使用委託)。

回答

1

在您的選項卡視圖中,您是否已將擁有的類設置爲MyController以獲取設置XIB的選項卡?如果你不這樣做,你會得到這種選擇器設置錯誤。把我的頭髮拉了一下。

+1

正確的錢!謝謝。 這是IB贏得的另一個晚上。 – edoloughlin 2009-06-25 22:48:07

0

進入Interface Builder並選擇您的MyController實例。單擊信息面板中的第二個選項卡可顯示連接到該對象的所有連接。它應該顯示現有的「tableView」插座和其他一些插座。如果它變灰 - 表示Interface Builder的連接定義不正確,並且插座無效。如果是這種情況(正如我認爲的那樣),只需點擊X並重新創建即可斷開該連接。當我更新XCode中插座和操作的名稱時,我已經多次發生過這種情況。

我也試着讓委託未設置,以確保這不是問題。儘管如此,我認爲這不重要。

祝你好運!