好的我創建了一個應用程序,其中一個屏幕中有一個呼叫槽屏幕。基本上有18個按鈕,從09.00-09.30到17.30-16.00不等,每行分成兩個按鈕。頂部還有兩個箭頭,允許用戶前進七天並返回當天。刷新視圖
當用戶點擊其中一個按鈕時,會彈出一個提示所選時間的提示。
現在我想要的是,當用戶訪問這個視圖時,任何不可改變的時隙具有不同的圖像。
我已創建的按鈕這樣
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;
}
}
空槽代碼是不完美的,仍然很少要解決的問題,但不是我遇到的問題。
我遇到的問題是,當用戶點擊右箭頭,去第二天,它運行代碼叫做fillslots,它會自動用正常按鈕重新填充插槽,第二天時隙將可用。問題是它不會立即刷新。與用戶點擊後退箭頭返回當前日期並運行空插槽方法時相同,我必須在刷新之前再次單擊箭頭。
我如何使它所以當用戶點擊箭頭,它會自動刷新視圖,這樣我就不必再次單擊箭頭其相當令人沮喪,我無法弄清楚:@
提前感謝您的幫助。希望我足夠清楚
我試過[SV setNeedsDisplay];然後嘗試[self.view setNeedsDisplay];但似乎沒有工作。將繼續與它混亂,看看是否可以完成一些事情,大壩煩人一件小事讓你回來 – AdamM 2012-01-05 13:46:43