2010-03-19 39 views
0

好了,所以我有一個與界面生成器創建了一些元素的viewController方法和一些我自己的編碼。iphone實例/類方法的問題

我創建的IB視圖...讓調用它viewOne。我創建了一個循環來創建按鈕(通過代碼)並將它們放置在單獨的視圖(viewTwo)上。這是在類方法中完成的。但是,我希望每次單擊其中一個按鈕時都可以打開我製作的視圖。所以我做:

[button addTarget:self action:@selector(woogoo:) 
      forControlEvents:UIControlEventTouchUpInside]; 

的woogoo類執行以下操作:

+(void) woogoo:(id)sender { 
    //back button 
    [self.view addSubview:viewOne] 
} 

然而,一個按鈕被按下時,程序崩潰。我曾嘗試將woogoo作爲實例方法,但在這種情況下也會崩潰。我想要做的就是當單擊一個按鈕時顯示viewOne。任何想法我可以做什麼?

+0

你什麼錯誤什麼時候你讓一個實例方法? – DyingCactus 2010-03-19 02:41:05

+0

當我使woogoo實例方法..我在控制檯得到這個消息: 2010-03-19 00:16:17.258 InstantNavigatore [85979:207] *** + [HomeViewController woogoo:]:無法識別的選擇器發送到類0xc7b8 2010-03-19 00:16:17.259 InstantNavigatore [85979:207] ***終止應用程序由於未捕獲的異常 'NSInvalidArgumentException',原因:「*** + [HomeViewController woogoo:]:無法識別的選擇發送到類0xc7b8' – user290031 2010-03-19 04:14:47

回答

0

而是你爲什麼不掛鉤的IBAction爲在界面生成器的按鈕,然後你可以把你的[self.view addSubview:viewOne]。進入該IBAction方法。

PS。你失蹤分號[self.view addSubview:viewOne]

乾杯

+0

我沒有通過界面生成器中的IBAction來做它,因爲我創建的按鈕不斷被創建。基本上,這部分應用程序是「通知」部分。因此,當用戶創建通知時,會創建一個新按鈕並放置在屏幕上。我不能以這種方式真正地調用IBAction。 – user290031 2010-03-19 04:13:20

0

有沒有足夠的信息,但我猜東西是錯誤的「viewOne」的內容,當你在woogoo。只是addSubview之前加入此行,看看你在控制檯上的內容:

NSLog("woogoo: %@", viewOne); 

您應該看到這樣的事情,使得視類型相匹配和幀你viewOne創建。如果你看到(null)或其他的東西,請檢查viewOne如何設置。

<UIView: 0x4519b70; frame = (10 1; 300 43); layer = <CALayer: 0x4519540>> 

也許你可以發佈viewOne的創建/初始化方式/時間的更多信息。

0

+woogoo:,調用self.view。既然是類方法,self也是一個類,所以+view也必須是類方法。你有沒有把它變成一個類的方法?

如果不是,則需要使-woogoo:成爲實例方法,並且還需要調用-addTarget:…實例方法並向上傳播的代碼。