2014-01-15 3 views
0

Мне нужно иметь 61 раздел в UITableView, это значит, что у меня должно быть 61 NSArray, верно?!с использованием нескольких разделов в UITableView и NSArray

первый я определить 61 NSArray и инициализации, что с точки зрения сделал нагрузки

он устал использовать этот код

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    // Return the number of rows in the section. 

    switch (section) { 
     case 0: 
      return [searchArray_1 count]; 
      break; 
     case 1: 
      return [searchArray_2 count]; 
      break; 
     case 2: 
      return [searchArray_3 count]; 
      break; 
     case 3: 
      return [searchArray_4 count]; 
      break; 
      ... 
     case 60: 
      return [searchArray_61 count]; 
      break; 
    } 
    return 1; 
} 

и этот код в конфигурационными клетках

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [self.myTable dequeueReusableCellWithIdentifier:CellIdentifier]; 

    switch (indexPath.section) { 
     case 0: 
      cell.textLabel.text = [searchArray_1 objectAtIndex:indexPath.row]; 
      break; 
     case 1: 
      cell.textLabel.text = [searchArray_2 objectAtIndex:indexPath.row]; 
      break; 
     case 2: 
      cell.textLabel.text = [searchArray_3 objectAtIndex:indexPath.row]; 
      break; 
      ... 
     case 60: 
      cell.textLabel.text = [searchArray_61 objectAtIndex:indexPath.row]; 
      break; 

     default: 
      break; 
    } 

    return cell; 
} 

это работает нормально, но как я могу уменьшить эти массивы

+1

Почему бы не использовать словарь вместо {@ "key": object}? – Joshua

+0

Возможный дубликат [Что было бы хорошей структурой данных для UITableView в сгруппированном режиме] (http://stackoverflow.com/questions/20216902/what-would-be-a-good-data-structure-for-uitableview-in -групповой режим) –

+0

вы также можете использовать словарь Dictionary.that, чтобы хранить все Array.so, и вы можете просто получить доступ к определенному массиву с помощью пары ключей и значений. Я думаю, что это лучший подход ... –

ответ

3

Вам нужен массив пыльников.

NSArray * sectionArray = @[searchArray_1, searchArray_2, ...., searchArray_61] ;

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    // Return the number of rows in the section. 
    NSArray * array = sectionArray[section] ; 
    return [array count] ; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [self.myTable dequeueReusableCellWithIdentifier:CellIdentifier]; 
    NSArray * array = sectionArray[indexPath.section] ; 
    cell.textLabel.text = array[indexPath.row] ; 
    return cell; 
} 
0

Вы могли бы сделать NSDictionary со всеми массивами включены, например, (Предполагая, что у вас есть свойство типа NSDictionary с базой имен);

self.database = @{ @1 : myArray1, @2:myArray2:}; 

Вы все еще должны заполнить его в первый раз вручную. Но в вашем cellForRowAtIndexPath: вы могли бы сделать что-то вроде этого:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    NSArray *arrayToUse = self.database[@(indexPath.row)]; 
    UITableViewCell *cell = [self.myTable dequeueReusableCellWithIdentifier:CellIdentifier]; 
    cell.textLabel.text = arrayToUse[indexPath.row]; 
    return cell; 
} 

Таким образом, вы будете использовать indexPath.row для поиска правильного NSArray в вас NSDictionary.

+0

это не работает, вероятно, результат в разделе 1 : первый объект из массива 1 и второй объект из массива 2 , а раздел 2 - тот же –

0

Использование Plist Database .plist базы данных в макияже Dictionary.that в магазин всего Array.so, и можно просто получить доступ конкретного массива, используя ключ и значение pair.I думает, что это лучший подход ...

0

Вы можете используйте словарь для этого. В вашем случае вам нужно 61 пара значений ключа. Для получения 61 секции Вы можете использовать

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return [dictionary allKeys].count; 
} 

И чтобы получить требуемое количество строк в каждом разделе, выполните следующий метод.

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 

} 

Чтобы заполнить все ячейки значениями, выполните следующий метод делегата.

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

} 

Здесь, чтобы получить правильные данные в таблице. Вам нужно указать значения конкретного ключа на основе раздела.

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