iphone - SetNeedsDisplay не работает - PullRequest
0 голосов
/ 15 июля 2011

Я пытаюсь обновить мой основной вид в этом коде.Он показывает правильный подвид, но он сохраняет другие показанные виды.Я уже пробовал 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];
   }

С уважением!

Ответы [ 2 ]

0 голосов
/ 15 июля 2011

Я все заработал!

Думаю, я не совсем понял, как работает setNeedsDisplay.В этом случае он должен был перерисовать мой ScrollView?

В любом случае, вот код, который работает сейчас:

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

и спасибо PengOne за попытку помочь!

0 голосов
/ 15 июля 2011

Попробуйте позвонить

  [self.view setNeedsDisplay];

в конце метода, после внесения изменений.

...