2011-03-30 64 views
1

我試圖使用方法將文本字段中的值從一個視圖傳遞到另一個視圖中的相應文本字段。動作valuesChanged連線到文本字段上的「Editing Did End」事件。我嘗試使用「Value Changed」,結果類似(不起作用)。我收到的唯一警告是在方法調用中。UIViewController可能不會響應methodName ::

下面是該VolumeViewController代碼:

@implementation VolumeViewController 

@synthesize boxWidth; 
@synthesize boxHeight; 
@synthesize boxLength; 
@synthesize sphereRadius; 
@synthesize boxResult; 
@synthesize sphereResult; 
@synthesize areaViewController; 

-(IBAction)valuesChanged:(id)sender 
{ 
    NSString *length = boxLength.text; 
    NSString *width = boxWidth.text; 
    NSString *radius = sphereRadius.text; 

    NSLog(@"length: %@", length);  
    NSLog(@"width: %@", width); 
    NSLog(@"radius: %@", radius); 

    [areaViewController changeValues:width :length :radius]; 
} 

-(void)changeValues:(NSString*)widthString :(NSString*)lengthString :(NSString*)radiusString 
{ 
    boxWidth.text = widthString; 
    boxLength.text = lengthString; 
    sphereRadius.text = radiusString; 
} 

正如你所看到的,valuesChanged動作實例化三個NSString對象,每個對應一個文本框的文本屬性。這些字符串然後傳遞給areaViewController的changeValues方法。除了文本字段名稱不同之外,areaViewController的changeValues方法與volumeViewController的方法相同。但是,我從來沒有在控制檯中顯示任何內容的NSLog命令,所以很明顯,儘管我的文本字段已連接到該操作,但它並未被調用。我需要解決什麼問題?

方法調用「[areaViewController changeValues:寬度:長度:半徑]後給出警告,並且它讀取‘的UIViewController’可以不響應‘-changeValues :::’

回答

2

定義在該方法中它你的頭。

+0

valuesChanged方法在標頭中聲明。我是否還需要聲明changeValues操作?如果是的話,我該怎麼做? – Michael 2011-03-30 20:30:52

+0

您可以像在任何其他方法中一樣在頭中聲明方法,或者 - 如果您寧願將其保留爲「私有」(由於Objective-C實際上沒有私有方法,所以引起恐慌) - 請參閱http:// stackoverflow.com/questions/172598/best-way-to-define-private-methods-for-a-class-in-objective-c – marramgrass 2011-03-30 20:52:23

2

你可以做什麼在.M以「申報」它的不.H(因爲它是一種對你的私有方法的,它不應該從外部可見)是添加此之前@implementation VolumeViewController

@interface VolumeViewController() 

- (void)changeValues: : : ; 

@end 

編輯:最好命名您的方法名稱中的所有參數。簽名應該是:

-(void)changeWidth:(NSString*)widthString lenght:(NSString*)lengthString radius:(NSString*)radiusString;

這是更具可讀性,當你使用它:

[areaViewController changeWidth:@"4" length:@"2" radius:@"6"];

1

您正在呼籲areaViewControllerchangeValues,但你已經定義了用於

VolumeViewController類方法

嘗試更改[areaViewController changeValues:width :length :radius];
[self changeValues:width :length :radius];

相關問題