UIViewController может не отвечать methodName ::: - PullRequest
1 голос
/ 31 марта 2011

Я пытаюсь использовать методы для передачи значений из текстовых полей в одном представлении в соответствующие текстовые поля в другом представлении. Действие valuesChanged связано с событием «Редактирование завершено» в текстовых полях. Я попытался использовать «Значение изменено» с похожими результатами (это не работает.). Единственное предупреждение, которое я получаю, - это вызов метода.

Вот код для 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, каждый из которых соответствует текстовым свойствам текстового поля. Эти строки затем передаются в метод changeValues ​​areaViewController. Метод changeValues ​​для areaViewController идентичен методу volumeViewController, за исключением того, что имена текстовых полей отличаются. Тем не менее, команды NSLog, которые я никогда не отображал в консоли, показывают, что, несмотря на то, что мои текстовые поля связаны с действием, оно не вызывается. Что мне нужно исправить?

Предупреждение выдается после вызова метода "[areaViewController changeValues: width: length: radius], и в нем говорится, что 'UIViewController' может не отвечать на '-changeValues ​​:::'

Ответы [ 3 ]

2 голосов
/ 31 марта 2011

Что вы можете сделать, чтобы «объявить» его в .m , а не в .h (потому что это своего рода частный метод для вас, и он не должен быть виден извне ) добавить это до @implementation VolumeViewController:

@interface VolumeViewController()

- (void)changeValues: : : ;

@end

EDIT: лучше назвать все аргументы в имени вашего метода. Подпись должна быть:

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

Это более читабельно при использовании:

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

2 голосов
/ 31 марта 2011

Определите метод в заголовке.

1 голос
/ 31 марта 2011

Вы звоните changeValues на areaViewController, но вы определили этот метод для VolumeViewController класса

Попробуйте изменить [areaViewController changeValues:width :length :radius];
до [self changeValues:width :length :radius];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...