2012-06-14 5 views
1

У меня есть UITableView на UIViewController. И эта таблица имеет «сказать» 5 видимых категорий на выбор. Но в массиве, содержащем контент, я говорю «10». То, что я создал сейчас, представляет собой обычную таблицу прокрутки, которая относится к категории 1 по индексу 0 к категории 10 по индексу 9. Но я бы предпочел, чтобы это была категория 1 также после категории 10 и наоборот.Создание прокрутки UITableView, как UIPickerView

Итак, в основном бесконечный цикл статического массива.

Я пробовал это с помощью метода scrollViewDidScroll:, но когда я делаю это, он не прокручивается, как вы ожидали бы прокрутки UITableView. Это RACES на случайное пятно и перемещение 1 или двух категорий невозможно.

Вот пример моего кода. Надеюсь, кто-то может помочь.

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if (scrollView == categoryView){ 
     if (categoryView.contentOffset.y > 0.0) { 
      loopcounter++; 
      NSLog(@"ScrollView Scrolled DOWN"); 
      [categorytablecontent insertObject:[categorytablecontent objectAtIndex:0] atIndex:[categorytablecontent count]-1]; 
      [categorytablecontent removeObjectAtIndex:0]; 
      [categoryView reloadData]; 
     } 
     if (categoryView.contentOffset.y < 0.0) { 
      loopcounter = [categorytablecontent count]; 
      NSLog(@"ScrollView Scrolled UP"); 
      [categorytablecontent insertObject:[categorytablecontent objectAtIndex:[categorytablecontent count]-1] atIndex:0]; 
      [categorytablecontent removeObjectAtIndex:[categorytablecontent count]-1]; 
      [categoryView reloadData]; 
     } 

     a = categoryView.visibleCells; 

     for (UITableViewCell *cell in a){ 
      NSLog(@"Current Visible cell: %@", cell.textLabel.text); 
     } 
     NSLog(@"Current offset: %@", categoryView.contentOffset.y); 
    } 
} 

ответ

2

Существует более чем один хороший способ сделать это. Контролирует ли ваш контроллер протокол UITableViewDataSource? Если это так, проще всего будет просто вернуть по модулю размер вашего набора данных в cellForRowAtIndexPath.

Что-то вроде:

-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *cellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) 
    { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; 
    } 

    // Use appropriate fields for your categorytablecontent object here... 
    cell.textLabel.text = [categorytablecontent objectAtIndex:(indexPath.row % [categorytablecontent count])]; 

    return cell; 
} 

Это должно привести к хорошей гладкой бесконечной прокрутке, что петли через статический (или динамическое) содержание.

Смежные вопросы