我是iOS開發新手,我有一個理解文件所有者邏輯的問題。作爲子視圖文件所有者的iOS?
我有這樣的情況:
我有兩個觀點(View_iPad,View_iPhone)及其控制器(ViewController_iPad,ViewController_iPhone)。基於啓動應用程序的設備,將使用特定視圖及其控制器。然後,我將xib文件的子視圖添加到此視圖中(使用iPad或iPhone視圖無關緊要)。假設這個子視圖在iPad和iPhone視圖中有不同的位置。這個子視圖包含一些標籤,所以我必須在子視圖控制器中創建IBOulets。
如果我明白,根據蘋果的邏輯,文件所有者的視圖是一個控制器(有權訪問該視圖並可以與之通信的文件)。所以3個視圖(iPhone,iPad,子視圖)中的每一個都有自己的控制器,這意味着這些控制器是這些視圖的文件所有者。
但是當我加載子視圖與代碼:
NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"subview" owner:self options:nil];
並將其添加爲一個子視圖到iPad/iPhone的看法,有一個問題,因爲這個子視圖包含標籤IBOutlets和這個標籤的子視圖控制器不在iPhone/iPad控制器中。
顯示此錯誤,則:
Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__NSCFConstantString 0x7ab4> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key view.'
我該如何解決這個問題?我試圖把所有者@「subviewController」,但它沒有幫助。謝謝。
編輯!!: 所以我試圖解決這個問題,但它仍然沒有工作。這是一個新的情況:
子視圖控制器是子視圖的所有者,但根視圖的自定義類是一個包含插座的類(從UIView派生)。
如果我在iPad/iPhone的控制器所有者:@ 「subviewController」,IGOT這個錯誤:
Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__NSObject 0x715bf30> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key view.'
凡的觀點是從子視圖控制器的屬性。現在告訴我問題在哪裏。我真的很絕望!
或者如果我擁有owner:self,則帶有指令的某個窗口將以EXC_BAD_ACCESS錯誤打開。
有兩個問題:1)在哪個類中執行了'NSArray * nibContents ='行(即self的值是多少)以及2)在哪裏觸發了異常?爲了找出在'throw'上設置一個異常斷點。 – NSSplendid
1)取決於應用程序啓動的設備。 Self是ViewController_iPad或ViewController_iPhone。 2)在loadNibNamed行中觸發異常。 – DanielH