2014-01-17 72 views
-3

Class1.m如何在課堂上進行目標和動作之間的交互?

#import Class2.h 

    Class2* test = [[Class2 alloc] init]; 

    UIButton* button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    [dropButton addTarget:test action:@selector(actionPressed:) forControlEvents:UIControlEventTouchDown]; 

Class2.m

#import Class1.h 

    -(UIButton *)actionPressed:(UIButton *)buttonPressed{ 
     NSLog(@"Test"); 
     return buttonPressed; 
    } 

響應功能不工作,我不知道爲什麼。模擬期間應用程序崩潰。建議修復將不勝感激。

+1

你遇到了什麼事故?並且請分享所有代碼,不僅僅是一小段代碼,您是在代碼中創建按鈕,以便將其添加到子視圖中的哪個位置?你在哪裏設置框架。最後,你爲什麼要返回'buttonPressed'?你已經有了這個按鈕。 – Popeye

+0

如果您只是將'test'設置爲本地變量,則可能會在您的操作被觸發之前解除分配。 –

+0

我收到錯誤:Undeclared selector'buttonPressed'。正如你所建議的,這很可能是局部變量聲明。我將如何改變這個實例變量?它會成爲1級還是2級的實例? –

回答

-1

似乎test是一個局部變量。沒有實際的錯誤很難說,但這可能是錯誤的地方。您應該將其更改爲實例變量,在這種情況下,將保留Class2對象,直到取消分配Class1

+0

更好的辦法是將其更改爲在後臺創建伊娃的財產。 – Popeye

+0

就我所見,在這種情況下沒有任何優勢。但可能也不會傷害。 –

+0

我已經有了一個遊戲,如果你把它作爲一個獨立的'ivar',它將會通過零。如果你這樣做是一個自動生成「ivar」的屬性,以及吸氣和吸盤,它將起作用。另外約定現在你不會再在'.h'文件的'@ interface'中有'ivars'了,你可以用屬性替換它們,如果你需要任何'ivars',這些都可以完成在實施過程中,由於'ivars'這些天應該是私人的類,而不是默認或公開的。 – Popeye