2009-10-20 22 views
0

我已經使用界面構建器創建了一個視圖控制器和關聯的視圖。我試圖調用從UIViewController添加到UIView的函數。我不知道如何調用該功能。在UIViewController的UIView中調用一個函數

我已經試過

[self.view myFunction] 

,但只是讓我的程序崩潰。

+0

你能發佈錯誤嗎?有比「崩潰」更多的細節會很有幫助。 – 2009-10-20 00:59:40

+0

是的,貼在下面... – Adam 2009-10-20 01:03:49

回答

1

您是否宣佈您的IB網點並將其連接到該網點?

您的視圖(更準確地說是nib)的文件所有者應該設置爲您的viewController類。

除非您調用繪圖函數和方法,否則您不應該在視圖上調用任何東西。你只是不需要。

編輯:語法更正。

+0

我知道如何在UIView中創建IBOutlet點,但是我如何在該方法中指向插座? 這是我在我的視圖控制器。 IBOutlet MyView * view1; 然後調用我的方法 [view1 myMethod]; 但這並沒有做任何事情。 – Adam 2009-10-20 01:29:23

+0

忘記在界面構建器中進行連接。現在就工作,謝謝! – Adam 2009-10-20 01:41:22

0

視圖如何初始化?它是一種自定義視圖類型嗎?如果您的視圖是從nib初始化的,請確保視圖類型的類是實現了該方法的類。

+0

視圖是我寫自定義代碼到drawRect函數並添加了另一個函數myFunction它的東西。它由筆尖初始化。 你在那裏的最後一部分失去了我。 – Adam 2009-10-20 00:56:30

0

它可能會崩潰,因爲UIView沒有名爲myFunction的方法。爲了將myFunction添加到UIView對象,您需要對它進行子類化。

我假設你已經將你的UIView子類化了,並且把它稱爲MyView。你也可能已經子類化你的UIViewController並將其命名爲MyUIViewController。因此,您可能有:

@interface MyViewController : UIViewController { 
    MyView *myView; 
.... 
} 

現在您可以調用[self.myView myFunction];

這是一種方法。另一種方式可能是:

[(MyView *)self.view myFunction]; 

這取決於是否MyView的是層次結構中的第一個視圖(或者應該在你的NIB文件中設置)。

+0

我嘗試了最後一個建議,它崩潰了。這裏的控制檯輸出: [HikerViewController]按下刷新位置 2009-10-19 20:58:47.082 UINavigationControllerWithToolbar [18268:207] *** - [UIView drawGraph ::]:無法識別的選擇器發送到實例0x3b0faa0 2009- 10-19 20:58:47.083 UINavigationControllerWithToolbar [18268:207] ***由於未捕獲異常'NSInvalidArgumentException',原因:'*** - [UIView drawGraph ::]:發送到實例0x3b0faa0的無法識別的選擇器'2009終止應用程序' 2009 -10-19 20:58:47。085 UINavigationControllerWithToolbar [18268:207] – Adam 2009-10-20 01:01:35

相關問題