2010-11-15 83 views
1

這是一個簡單的問題,我確信我在過去有效。我試圖通過方法從視圖控制器調用視圖方法

-(IBAction)spinButton:(id)sender{ 
    [view spinAction]; 
} 

從視圖控制器

#import <UIKit/UIKit.h> 
#import "View.h" 

@interface layers3ViewController : UIViewController { 
    IBOutlet View *view; 
} 

-(IBAction)spinButton:(id)sender; 

@end 

調用的方法在視圖中

#import <UIKit/UIKit.h> 

@interface View : UIView { 
} 

-(void)spinAction; 

@end 

但它的工作不能得到。一切都使用Interface Builder放在一起。我在這裏做一些根本性的錯誤嗎?以前的代碼通過投入工作

[self.view spinAction] 

儘管有錯誤消息,但甚至沒有在這裏工作。任何提示/建議都比歡迎。

+1

你的伊娃實際上是否被命名爲「視圖」? – Anna 2010-11-15 21:28:39

+0

我這麼認爲,但也許這是一個錯誤的選擇名稱 – drw 2010-11-15 22:03:30

回答

1

self.view返回類UIView的一個對象,你可能不應該試圖改變它。您需要創建一個類別爲View的新插座,並將其連接到接口構建器中。

@interface layers3ViewController : UIViewController { 
    IBOutlet MyView *myView; 
} 
@property (nonatomic,retain) IBOutlet MyView *myView; 


-(IBAction)spinButton:(id)sender; 

@end 

在您的實現應該是這樣的:

@implementation layers3ViewController 
@synthesize myView; 
-(IBAction)spinButton:(id)sender{ 
    [self.myView spinAction]; 
} 

不要忘記到MyView的出口在Interface Builder連接到您的視圖。

+0

這似乎工作,甚至沒有@property和@synthesize指令。我現在有一個視圖和一個MyView,這很好。非常感謝這一點以及其他人對他們的反饋。開始下一個問題... – drw 2010-11-15 22:22:09

2

view已經UIViewController中的一個屬性,它是一個IBOutlet所以我不知道當你在Interface Builder協會至極view將被設置。 試試這個

#import <UIKit/UIKit.h> 
#import "View.h" 

@interface layers3ViewController : UIViewController { 
    //IBOutlet View *view; 
} 

-(IBAction)spinButton:(id)sender; 

@end 

-(IBAction)spinButton:(id)sender 
{ 
    View *myView = (View *)self.view; 
    [myView spinAction]; 
} 

,當然在Interface Builder的確保你的對象關聯的view出口是你View類的一個實例。

+0

非常感謝這一點;無法完成它的工作。我懷疑問題是由於選擇了變量名稱視圖。非常感謝,但;它肯定會讓事情變得更清晰。 – drw 2010-11-15 22:24:59

相關問題