2011-08-05 62 views
0

我的程序确实从UISlider获得了valuse,并通过协议将值发送给它的父类。如何通过委托传递uislider值?

child.h

-(void) valueA:(NSInteger *)vA valueB:(NSInteger *)vB; 

,我把它在child.m

[self.delegate valueA:sliderA.value valueB:sliderB.value]; 

但它返回错误说 “不兼容类型值a的参数1:VA:” 做我有在传递值之前解析该值?或者我只是犯了错误的参数?

回答

1
-(void) valueA:(NSInteger *)vA valueB:(NSInteger *)vB; 

这种方法实际上应该是

-(void) valueA:(CGFloat)vA valueB:(CGFloat)vB; 

我改变NSInteger的*到GCFloat有两个原因。

UISlider的value属性是一个CGFloat,所以转换为NSInteger会导致精度丢失。如果你不介意,你可以改变它,但我明确地施放它,所以更清楚这就是你想要的。

我删除了*,因为你传递的是一个值,而不是一个引用。

+0

谢谢!它的工作原理:-) – user842589

+0

'UISlider'实际上需要一个'float',而不是'CGFloat'作为它的值属性。 – Matoe