首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iphone - SetNeedsDisplay不工作

iphone - SetNeedsDisplay不工作
EN

Stack Overflow用户
提问于 2011-07-15 05:45:01
回答 2查看 1.4K关注 0票数 0

我试图在这段代码中刷新我的主视图。它显示了右子视图,但保留了已显示的其他视图。我已经尝试了setNeedsDisplay和setNeedsLayout,但没有成功。

有什么想法吗?

代码:

代码语言:javascript
复制
-(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];
   }

致以问候!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-15 06:26:29

我让它工作了!

我想我并不完全理解setNeedsDisplay是如何工作的。在这种情况下,它是不是也应该重新绘制我的ScrollView?

无论如何,下面是现在可以工作的代码:

代码语言:javascript
复制
-(IBAction)clickOnDate1{
    for (UIView *view in [self.scroll subviews]) {
        [view removeFromSuperview];
    }
    NSLog(@"Date1 clicked");
    [self setViewsForLecture:@"4"];
}

感谢PengOne的帮助!

票数 0
EN

Stack Overflow用户

发布于 2011-07-15 05:49:09

试着打电话

代码语言:javascript
复制
  [self.view setNeedsDisplay];

在方法的末尾,在您进行了更改之后。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6700302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档