我试图在这段代码中刷新我的主视图。它显示了右子视图,但保留了已显示的其他视图。我已经尝试了setNeedsDisplay和setNeedsLayout,但没有成功。
有什么想法吗?
代码:
-(void)setViewsForLecture:(NSString *)date{
int scrollHeight = 0;
[self.view setNeedsDisplay];
FMDatabase* db = [DatabaseManager openDatabase];
NSString *query = [NSString stringWithFormat:@"select * from tbl_lectures where day like \"%%%@%%\" ", date];
FMResultSet *rs= [db executeQuery:query];
//Counts how many lectures
int position = 0;
while ([rs next]) {
NSMutableArray *speakers = [[NSMutableArray alloc] initWithCapacity:30];
NSString *lectureName = [rs stringForColumn:@"lecturename"];
FMResultSet *speakersList = [db executeQuery:@SELECT_SPEAKER_FOR_LECTURE, lectureName];
while ([speakersList next]) {
[speakers addObject:[speakersList stringForColumn:@"speaker"] ];
}
if ([speakers count] % 2 == 0)
{
scrollHeight += [speakers count]*40;
}
else
{
scrollHeight += (1 + ([speakers count] -1)/2)*40;
}
NSLog(@"Csantos: speakers for %@: %i",lectureName, [speakers count]);
UIView *aLecture = [CustomInterface viewForLecture:[rs stringForColumn:@"lecturename"]
onPosition:position
withSpeakers:speakers];
[self.scroll addSubview:aLecture];
[aLecture release];
[speakers release];
scrollHeight += 280;
position++;
}
self.scroll.contentSize = CGSizeMake(300, scrollHeight);
[db release];
}致以问候!
发布于 2011-07-15 06:26:29
我让它工作了!
我想我并不完全理解setNeedsDisplay是如何工作的。在这种情况下,它是不是也应该重新绘制我的ScrollView?
无论如何,下面是现在可以工作的代码:
-(IBAction)clickOnDate1{
for (UIView *view in [self.scroll subviews]) {
[view removeFromSuperview];
}
NSLog(@"Date1 clicked");
[self setViewsForLecture:@"4"];
}感谢PengOne的帮助!
发布于 2011-07-15 05:49:09
试着打电话
[self.view setNeedsDisplay];在方法的末尾,在您进行了更改之后。
https://stackoverflow.com/questions/6700302
复制相似问题