У меня есть UITableView со многими ячейками в нем. В нем есть несколько ярлыков с изображением. Но изображение не находится в каждой ячейке, поэтому у меня есть инструкция if, которая проверяет, должна ли она быть скрытой, и если мне нужно изменить ярлык влево. Что я могу сделать с этим кодом.Перемещение позиции UILabel для UITableViewCell
if (checking here not relevant) {
cell.liveButton.hidden = YES;
CGRect frame = cell.gameTimeLabel.frame;
frame.origin.x= 27; // move the label 10px to the left since no image will be present
cell.gameTimeLabel.frame= frame;
NSLog(@"in here"); // Checking if this code actually runs
}
Так что, когда я начала мое приложение метка еще не изменилась (но она выводит сообщение «здесь»), то у меня есть таймер, который запускает таблицу перезагрузки один раз каждые 10 секунд. И в следующий раз он обновится, когда консоль снова напечатает «здесь». Затем метки меняют место. Почему это и как я могу это исправить, чтобы метки менялись в первый раз?
Спасибо за помощь!
- (void) startTimer{
[timer invalidate];
timer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(retrieveData) userInfo:nil repeats:YES];
}
- (void) retrieveData{
gamesInfoArray = [gamesInfoObject fetchData];
[self.tableView reloadData];
}
и в другом классе, к которому я вызвать функцию, чтобы получить информацию JSon
-(void) fetchData{
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setHTTPMethod:@"GET"];
[request setURL:[NSURL URLWithString:url]];
NSError *error = [[NSError alloc] init];
NSHTTPURLResponse *responseCode = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&responseCode error:&error];
if([responseCode statusCode] != 200){
NSLog(@"Error getting %@, HTTP status code %li", url, (long)[responseCode statusCode]);
}
jsonDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
}
Вместо использования одной и той же ячейки попробуйте создать две ячейки и использовать то, что вам нужно. Один в выражении If, а другой в инструкции else. –
Прошли ли вы через свой код по очереди, чтобы убедиться, что все переменные - это то, что вы ожидаете от них? Если «здесь» печатается, возможно, одна из переменных неожиданно «nil». –
Но это не логично? почему значения не будут равны нулю после того, как он снова загрузит табличное представление? он делает тот же процесс снова, но я могу проверить, чтобы быть уверенным @AaronBrager –