Я получаю вопросы от сервера, использующего скрипт php. Я устанавливаю количество ячеек в соответствии с количеством вопросов, но когда я пишу в ячейки, выводится только 1 вопрос. Если я использую цикл for, ячейки будут пустыми, но если я установлю число, он будет повторять тот же вопрос в зависимости от количества вопросов в базе данных. Вот код:
NSString *numOfQuestionsURL = @"http://**.***.**.**/count.php";
NSData *dataURLforSize = [NSData dataWithContentsOfURL:[NSURL URLWithString: numOfQuestionsURL]];
NSString *serverOutputforSize = [[NSString alloc] initWithData:dataURLforSize encoding:NSASCIIStringEncoding];
int numOfQuestions = [serverOutputforSize intValue];
for(int i = 0; i <= numOfQuestions; i++)
{
_hostStr = @"http://**.***.**.**/getQuestion.php?num=";
_appendString = [[NSNumber numberWithInt:i] stringValue];
_hostStr = [_hostStr stringByAppendingString: _appendString];
}
NSData *dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString: _hostStr]];
NSString *serverOutput = [[NSString alloc] initWithData:dataURL encoding:NSASCIIStringEncoding];
result.textLabel.text = serverOutput;
_appendString = [[NSNumber numberWithInt: i] stringValue]; здесь вы указываете сценарию, какой вопрос хотите получить.
1 ответ
Вам нужно использовать этот код вот так
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section {
NSString *numOfQuestionsURL = @"http://**.***.**.**/count.php";
NSData *dataURLforSize = [NSData dataWithContentsOfURL:[NSURL URLWithString: numOfQuestionsURL]];
NSString *serverOutputforSize = [[NSString alloc] initWithData:dataURLforSize encoding:NSASCIIStringEncoding];
return [serverOutputforSize intValue];
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//make cell
_hostStr = @"http://**.***.**.**/getQuestion.php?num=";
_appendString = [[NSNumber numberWithInt:indexPath.row] stringValue];
_hostStr = [_hostStr stringByAppendingString: _appendString];
NSData *dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString: _hostStr]];
NSString *serverOutput = [[NSString alloc] initWithData:dataURL encoding:NSASCIIStringEncoding];
cell.textLabel.text = serverOutput;
return cell;
}
Также вы можете загружать данные в фоновом режиме и поддерживать массив вопросов и заполнять их в таблице, что делает вашу таблицу гладкой. в настоящее время ваш стол ведет себя отрывисто.
Похожие вопросы
Новые вопросы
objective-c
Этот тег следует использовать только для вопросов, касающихся функций Objective-C или зависящих от кода на языке. Теги [cocoa] и [cocoa-touch] следует использовать, чтобы узнать о фреймворках или классах Apple. Используйте связанные теги [ios], [macos], [apple-watch] и [tvos] для проблем, характерных для этих платформ.