CGFloat被修改后被发送到viewController

时间:2011-12-16 18:22:19

标签: objective-c ios cocoa viewcontroller cgfloat

这真的很奇怪。我从我的视图中获取了一个CGFloat值并将其发送到我的viewController,它将把它传递给我的音频引擎。但是,CGFloat会在view和viewController之间以某种方式进行修改。完全难倒。

以下是视图中的方法

-(void)mod:(CGFloat)value
{
    if(value < 0) value = 0.;
        if(value > self.bounds.size.width - 10)value =  self.bounds.size.width - 10.f;

            value =  value / (self.bounds.size.width - 10.f) ;
            NSLog(@"value %g", value);   ///prints a value between 0.0 - 1.0
            [viewController mod:value forVoice:voiceToPlay];
}

打印介于0.0 - 1.0

之间的值

然后在我的viewController中,这个方法接收它......

-(void)mod:(CGFloat)value forVoice:(NSUInteger)voice
{
    NSLog(@"mod in view control %g", value);

    [audioController mod:value forVoice:voice];
}

这会打印完全错误的数字,例如1.0842e-19,2,-2

这可能很简单,但我无法弄清楚它是什么!谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

我是初学者,所以我不确定这一点,但是你能真正改变并将方法的输入值重新发送到另一种方法吗?你是不是应该在mod:方法中创建另一个CGFloat然后将该值发送给viewController?

答案 1 :(得分:0)

我猜你在编译这个程序时会收到一些警告(除非你禁用它们)。修复它们,这将消失。

具体来说,确保在mod: forVoice:中声明(a)viewController.h(并且声明与实现相匹配),以及(b)实现文件中包含viewController.h在电话会议之前查看。