나는 내 자신의 인터벌 훈련 타이머를 프로그램하려고합니다. 이제는 UIStepper 컨트롤의 값을 읽는 데 문제가 있습니다.은 UIStepper의 값을 읽을 수 없습니다.
지금까지 작동하는 UIStepper 컨트롤러를 통해 int를 설정했습니다.
- (IBAction)stepperChange:(id)sender {
// converting double to int
int temp = [[NSNumber numberWithDouble:[(UIStepper *)sender value]] intValue];
NSLog(@"stepper was pressed. Current values is %d", [[NSNumber numberWithDouble:[(UIStepper *)sender value]] intValue]);
self.intervalSeconds.text = [NSString stringWithFormat:@"%i", [[NSNumber numberWithDouble:[(UIStepper *)sender value]] intValue]];
mainInt = [[NSNumber numberWithDouble:[(UIStepper *)sender value]] intValue];
}
지금까지는 그렇게 좋았습니다. 문제는 그 타이머가 0에 도달하자마자 UISteppers 값으로 재설정하고 싶다는 것입니다.하지만 (ID) 발신자없이 steppers 값을 직접 읽으려고하면 항상 0의 값을 얻습니다.
예를 들어, 나는 그냥 바보 같은 초보자의 실수 추측
-(void)readStepperValue {
NSLog(@"Read UIStepper control value: %f", [intervalStepper value]);
}
...
가 좋아, 난 그냥 슈퍼 간단한 테스트 응용 프로그램을 만든 이 코드는 다음과 같습니다
vierContro ller.h :
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController {
IBOutlet UIStepper *stepper;
IBOutlet UILabel *stepperValue;
}
@property (nonatomic, strong) UIStepper *stepper;
@property (nonatomic, strong) UILabel *stepperValue;
- (IBAction)showStepperValue;
@end
viewController.m :
#import "ViewController.h"
@interface ViewController()
@end
@implementation ViewController
@synthesize stepper, stepperValue;
- (IBAction)showStepperValue {
int temp = stepper.value;
stepperValue.text = [NSString stringWithFormat:@"%i", temp];
[self showValue];
}
- (void)showValue {
int temp = stepper.value;
NSLog(@"stepper.value: %i", temp);
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
라벨이 IBAction를 메소드 내에서 제대로 업데이트됩니다. 하지만 IBAction 내에없는 별도의 메서드 (showValue)를 호출하면 컨트롤러의 값을 읽을 수 없습니다. ...
IB의'intervalStepper' 인스턴스 변수와 액션을 연결 했습니까? –
스테퍼 컨트롤러를 IBAction에 연결했습니다. 그러나 컨트롤러의 가치를 읽는 것은 IB와 아무런 관련이 없습니다. 맞습니까? –
코드를 올바르게 이해한다고 가정하면'-readStepperValue'에서'intervalStepper'라는 UIStepper 인스턴스 변수를 읽는 것처럼 보입니다. 이것이 프로그램 적으로가 아니라 IB로 만든 UIStepper를 가리 키기위한 것이라면, 인스턴스 변수를 IBOutlet으로 선언하고 연결해야합니다. –