2012-01-05 6 views
0

私は画面の1つにコールスロット画面があるアプリケーションを作成しました。基本的には09時09分30秒から17時半〜16時半までの18個のボタンが行ごとに2つのボタンに分割されています。上部には2つの矢印があり、ユーザーは最大7日間、現在の日付に戻ることができます。ビューを更新する

ユーザーがボタンの1つをクリックすると、選択された時間を示すアラートがポップアップ表示されます。

ここで私が望むのは、ユーザーがこのビューにアクセスすると、変更できないタイムスロットが別のイメージになることです。

私は今、この

for(int i = 0; i <[imageList count]; i++){ 
    UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(xPos, yPos, 145, 55)]; 
    csBut = [[UIButton alloc]init]; 
    csBut = [UIButton buttonWithType:UIButtonTypeCustom]; 
    csBut.frame = CGRectMake(0, 0, 145, 55); 
    [csBut addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; 
    [csBut setImage:[imageList objectAtIndex:i] forState:UIControlStateNormal]; 
    csBut.tag = (100 + i); 
    [myView addSubview:csBut]; 
    [SV addSubview:myView]; 

    if(i % 2 == 0){ 
     xPos += 160;  
    }else{ 
     yPos+=60; 
     xPos = 5; 
    } 

} 

[self emptySlots]; 

} 

下で宣言空のスロット方式のようなボタンを作成して、時間が現在時間よりも小さい場合、各タイムスロットとチェックをスキャンする方法です。そうであれば、画像はフェードアウトされたボタン画像に変更される。コードは

-(void)emptySlots{ 

int tmpValue = 100; 
int myInteger = 1; 
int tmpHour = 9; 
int tmpMinute = 0; 

for(int i = 0 ; i <18; i++){ 
    UIButton *validSlot = (UIButton*)[self.view viewWithTag:tmpValue]; 

    if(i % 2 == 0){ 

     tmpMinute = (arc4random() % 30); 
    }else{ 

     tmpMinute = (arc4random() % 30) + 30; 
     tmpHour+=1; 

    } 

    [self checkValidSlot:tmpHour :tmpMinute]; 

    if(tslot){ 
     NSString* myNewString = [NSString stringWithFormat:@"tb%i.png", myInteger];  
     [validSlot setImage:[UIImage imageNamed:myNewString] forState:UIControlStateSelected]; 
     [validSlot setSelected:YES]; 
    }else{ 
     NSString* myNewString = [NSString stringWithFormat:@"fb%i.png", myInteger];  
     [validSlot setImage:[UIImage imageNamed:myNewString] forState:UIControlStateSelected]; 
     [validSlot setSelected:YES]; 
    } 

    tmpValue+=1; 
    myInteger+=1; 
} 

} 

空きスロットのコードはまだ完全ではありませんが、私は持っている問題はまだ解決していないものです。

私が抱えている問題は、ユーザーが右矢印をクリックして翌日に行くと、フルスロットと呼ばれるコードが実行され、タイムスロットが使用可能になる翌日に通常のボタンでスロットに自動的に再充填されます。問題はそれが直ちにリフレッシュされないということです。ユーザーが現在の日に戻って空のスロットメソッドを実行するために戻る矢印をクリックしたときと同じですが、リフレッシュする前に再度矢印をクリックする必要があります。

@:私は、ユーザーが矢印をクリックしたときに、私はそのかなりイライラとして再度矢印をクリックする必要はありませんし、私はそれを把握することはできませんので、それはそう、それは自動的にビューをリフレッシュさせるにはどうすればよい

事前にお手伝いをしていただきありがとうございます。私は十分にはっきりしていたと思う。

答えて

0

私はそれを把握することができました。スレッドを使用してコール・スロットを更新し、それは完全に機能しました:D

0

setNeedsDisplayUIViewにしてみてください。詳しくは、Apple documentation

ボタンクリックアクションの最後の行に[SV setNeedsDisplay];のようになります。

+0

私は[SV setNeedsDisplay]を試しました。試してみた[self.view setNeedsDisplay];しかし動作していないようです。それをぶち壊し続けるだろうか、何かを得ることができるかどうかを見て、ダムはあなたを背負いながら少し迷惑をかける – AdamM

関連する問題