2011-07-30 15 views
3

シンセサイザアプリケーションでXcodeで作業しています。私はカスタムスライダーとノブを使用しています。私は埋め込み型の純粋なデータパッチ(私は純粋なデータライブラリとラッパーとしてlibpdを使用しています)で受信者に制御値を送るようにします。switch文(Objective C)で動作しているケースが1つだけです

インターフェイスに複数のカスタムスライダとノブがあります。私は、各自が他のスライダ/ノブとは無関係に独自のコントロール値だけを送信したいと思っています。

私はタグとswitch文を使用しています。 問題は、最初のケースだけが動作しており、すべてのスライダとノブが同じ受信機に制御値を送信しているということです。

- (void)viewDidLoad { 
    [super viewDidLoad]; 

// Slider 1 

    slider.tag = 0; 
    slider = [[[DCSlider alloc] initWithDelegate:self] autorelease]; 
    slider.frame = CGRectMake(0,0,20,100); 
    [self.sliderContainer addSubview: slider]; 


// Slider 2 

    slider2.tag = 1;  
    slider2 = [[[DCSlider alloc] initWithDelegate:self] autorelease]; 
    slider2.frame = CGRectMake(0,0,20,100); 
    [self.sliderContainer2 addSubview: slider2];  
} 

、その後、私はここでメソッドを実装する...

- (void)controlValueDidChange:(float)value sender:(id)sender { 

    DCSlider *slidertag = (DCSlider *)sender; 

    switch (slidertag.tag) 
    { 
     case 0: 
     { 
      [PdBase sendFloat:value toReceiver:@"beatvol"]; 
     } 
      break; 
     case 1: 
     { 
      [PdBase sendFloat:value toReceiver:@"bassvol"]; 
     } 
      break; 
    }  
} 

は誰でも助けてくださいことはできますか?ありがとう。

答えて

2

さて、それでも?

明らかに、スライダーごとに別々のターゲットを割り当てる必要があります。

また、あなたの例では、スライダーを作成する前にタグを割り当てています。プロパティを設定する前に必ずinitを配置してください。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Slider 1 

    slider = [[[DCSlider alloc] initWithDelegate:self] autorelease]; 
    slider.tag = 0; 
    slider.frame = CGRectMake(0,0,20,100); 
    [slider addTarget:self action:@selector(controlBassValueDidChange:) forControlEvents:UIControlEventValueChanged]; 
    [self.sliderContainer addSubview: slider]; 

    // Slider 2 

    slider2 = [[[DCSlider alloc] initWithDelegate:self] autorelease]; 
    slider2.tag = 1; 
    slider2.frame = CGRectMake(0,0,20,100); 
    [slider2 addTarget:self action:@selector(controlBeatValueDidChange:) forControlEvents:UIControlEventValueChanged]; 
    [self.sliderContainer2 addSubview: slider2];  
} 

- (void)controlBassValueDidChange:(float)value sender:(id)sender 
{ 
    [PdBase sendFloat:value toReceiver:@"bassvol"]; 
} 
- (void)controlBeatValueDidChange:(float)value sender:(id)sender 
{ 
    [PdBase sendFloat:value toReceiver:@"beatvol"]; 
} 

そして、あなたはmy answer to your other questionを使用する場合は、あなたができる少なくともはそれをupvoteを与えています。 ; - ]

+0

@ WrightsCS:upvote?私は今それをやったと思う。私は最後の投稿を有用とマークしました。私は本当にあなたと(そして他の誰もが私を提供している)すべての助けとアドバイスに感謝します。 –

+0

@ WrightsCS:それは働いた!!!!あなたが言ったように、私はスライダーを作成する前にタグを割り当てたので、うまくいきませんでした。 あなたはトップ・オタクです!どうもありがとうございました。 このサイトではどのように大きな親指をあげますか? –

+0

チェックマークとUPの矢印をチェックしてください。他の質問と同じです! – WrightsCS

0

スイッチの構文hereをもう一度確認してください。基本的には、内部区切り文字をなくしてください。

関連する問題