Остановите перезагрузку данных таблицы в UITableView, когда он тянет / прокручивает - PullRequest
1 голос
/ 05 декабря 2011

Я знаю, что это не обычная практика, но моему приложению нужна эта функциональность. Я очень новичок в программировании iPhone. Когда пользователь тянет / прокручивает экран таблицы, он обновляется, я должен остановить его. Кроме того, порядок данных изменяется, когда я их извлекаю.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

static NSString *MyIdentifier = @"MyIdentifier";
cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil)
{
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
    button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 300, 50)];
    [button addTarget:self action:@selector(optionButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
    [button setTitle:optionValue forState:UIControlStateNormal];
    [button setTag:indexPath.row];
    [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    [cell.contentView addSubview:button];
    [button release];
}
return cell;

}

1 Ответ

0 голосов
/ 05 декабря 2011

Во-первых, неправильный способ использования cellForRowAtIndexPath.

static NSString *MyIdentifier = @"MyIdentifier";
cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil)
{
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
    button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 300, 50)];
    [button addTarget:self action:@selector(optionButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
    [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    [cell.contentView addSubview:button];
    [button release];
}
//These should be outside of the cell == nil loop so that they get refreshed correctly
[button setTitle:optionValue forState:UIControlStateNormal];
[button setTag:indexPath.row];

return cell;

Во-вторых, я не вижу, где вы устанавливаете optionValue, но если вы не хотите каждый раз обращаться к базе данных, сохраните значения в NSArray и получите значения из массива. Таким образом, вы загружаете базу данных только один раз, когда загружаете представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...