[英]Refreshing a view
好的,我创建了一个应用程序,在其中一个屏幕中,我有一个呼叫槽屏幕。 基本上有18个按钮,范围从09.00-09.30一直到17.30-16.00,每行分成两个按钮。 顶部还有两个箭头,允许用户前进最多7天并返回到当前日期。
当用户单击其中一个按钮时,它将弹出并显示警告,指出选择的时间。
现在我想要的是,当用户访问该视图时,任何不可更改的时隙都将具有不同的图像。
我已经创建了这样的按钮
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];
}
现在,在底部声明的empty slot方法是一种扫描每个时隙并检查小时是否小于当前小时的方法。 如果是,则将图像更改为淡出的按钮图像。 代码是
-(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的代码,该代码会在第二天可用的时间段内使用普通按钮自动重新填充插槽。 问题是它不会立即刷新。 与用户单击后退箭头以返回到当前日期并运行空槽方法一样,我必须再次单击箭头才能刷新。
我如何做到这一点,当用户单击箭头时,它会自动刷新视图,因此我不必再次单击箭头,因为它颇为令人沮丧,我也无法弄清楚:@
在此先感谢您的帮助。 希望我足够清楚
尝试UIView
的setNeedsDisplay
。 有关更多参考,请访问Apple文档。
就像[SV setNeedsDisplay];
在按钮中单击操作方法的最后一行。
我设法弄清楚了。 我用线程来更新callslots,它工作得很完美:D
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.