색상 선택 도구를 만들고 있습니다.값이 불필요하게 양방향으로 전달되는 것을 어떻게 멈출 수 있습니까?
보기 controller.h :
@interface ColorPickerViewController : UIViewController <HueSliderDelegate> {
HueSlider *hueSlider;
float hue;
}
@property (nonatomic, assign) float hue;
@end
보기 controller.m :
-(void)setHue:(float)hueLocal {
hue = hueLocal;
hueSlider.hue = self.hue;
}
-(void)hueChanged {
self.hue = hueSlider.hue;
}
HueSlider.h : 나는 다음과 같은 코드가
@protocol HueSliderDelegate <NSObject>
-(void)hueChanged;
@end
@interface HueSlider : UISlider {
HueSlider *hueSlider;
float hue;
}
@property (nonatomic, assign) float hue;
@end
HueSlider.m :
//the hue float can be set when the user moves the slider
-(void)setHue:(float)hueLocal {
hue = hueLocal;
slider.value = self.hue;
[self.delegate hueChanged];
}
사용자가 값을 변경하면 슬라이더가 변경 사항을 View Controller에 보냅니다. 뷰 컨트롤러는 색조의 값을 변경하여 변경 사항을 다시 슬라이더로 보냅니다. 슬라이더로 되돌려 보내지 않아도되며 사용자가 슬라이더를 따라 움직이면 다시 원래 위치로 돌아갑니다. 이 문제를 어떻게 막을 수 있는지에 대한 조언이 있습니까?
참고 : 실제로 슬라이더는 아니지만 슬라이더와 비슷한 사용자 지정 컨트롤을 설명하는 것보다 덜 복잡하기 때문에이 문맥에이 문제를 적용합니다.
변경 사항이 코드를 통해 발생하면 (예 : 사용자 작업과 반대되는 방식으로) hueChanged를 컨트롤에서보기 컨트롤러로 다시 보내지 않으시겠습니까? – Till
슬라이더가 설정된 값에 ColorPickerViewController의 색조를 설정하고 ViewController의 .h 파일에서'float hue;'선언을 건너 뛰지 않는 이유는 무엇입니까? –