2012-10-03 57 views
1

對不起,如果這個問題是基本的,但過去兩天我一直在困擾這個bug &我一直無法克服它。我使用的Xcode 4.3.2Xcode 4:在另一個文件的方法中加載一個筆尖

我試圖載入名爲AController.xib筆尖在一個名爲方法「 - (空)進程」中的文件名爲BController.m

需要明確的是,我將./A/AController.xib(這是一個UIView),./A/AController.m,./A/AController.h複製到目錄中./B

我只提到這一點,因爲我不是當然,如果它對我的問題很重要。

目前,我的運作流程流(這可能是我的問題):

  • 視圖加載帶有「購買」按鈕
  • 用戶點擊「購買」按鈕,有一個名爲一個IBOutlet 「現在購買」
  • 「現在購買」呼叫「購買」,然後調用「過程」然後
  • 進程試圖用下列(選項1)加載筆尖:

    AControlle r * blah; ([object is in bundle]){ if([object isKindOfClass:[AController class]]) blah =(AController *)object; } assert(blah!= nil & &「blah can not be nil」); [self.view addSubView:blah];

我來到這裏的錯誤是 「主題1:信號SIGABRT」 中的main.m 我也試過(選項2),

AController *myView = [[AController alloc] initWithFrame:self.view.bounds]; 
[self.view addSubview:myView]; 
[AController release]; 

和(選項3)

AController * vc = [[AController alloc] initWithNibBundle:@"AController" bundle:nil]; [self.nc pushViewController:vc animated:NO]; 

我得到同樣的錯誤,所有3個選擇。每個選項都在「過程」方法中嘗試過。 「過程」寫在B.m.任何人都可以提供一些幫助,以便我可以弄清楚這一點嗎?任何關於爲什麼這些選項失敗的指導將對我的理解非常有幫助,我們將非常感謝。感謝您幫助noob!

+0

./A/AController.xib(這是一個UIView)..我認爲筆尖是UIViewcontroller而不是UIView –

+0

AController.xib是UIView。 AController是UIViewController的子類 – Henry

回答

1

如果AControllerUIView的子類,它不能加載NIB。驗證它實際上是一個控制器,但是從initWithFrame以及您將它添加到視圖的方式來看,它看起來不是或者處理不正確。

+0

AController是UIViewController的子類,不是UIView。我的意思是說AController.xib是一個UIView(查看Identity Inspector)。 – Henry

+0

在這種情況下,您需要確保該行[self.view addSubview:myView];讀取[self.view addSubview:myView.view]; – diatrevolo

+0

這似乎也不起作用。爲什麼會main.m int retVal = UIApplicationMain(argc,argv,nil,nil)拋出「線程1:信號SIGABRT」錯誤?控制檯說:「***終止應用程序,由於未捕獲異常'NSUnknownKeyException',原因:'[ setValue:forUndefinedKey:]:該類不是密鑰值編碼兼容的密鑰CVCField」。 – Henry