好的我创建了一个应用程序,其中一个屏幕中有一个呼叫槽屏幕。基本上有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