2015-01-23 1 views
0

Я создал табличное представление с несколькими клетками прототипа (4), чтобы отображать различный контент в каждой ячейке, но являющийся новым - Я не понимаю, как затем закодировать это в контроллере tableview, чтобы вытащить данные в несколько ячеек (просто используя несколько простых массивов с одной точкой данных для каждой метки, чтобы проверить ее), но я могу получить данные только для заполнения первая ячейка - и не ясно, как закодировать, чтобы получить данные в оставшиеся ячейки. Я создал 4 отдельных файла customtableviewcell. Может ли кто-нибудь указать мне в правильном направлении, как закодировать, чтобы я мог получать данные в четыре отдельные ячейки прототипа? Мне нужно, чтобы она могла прокручиваться, когда она выиграла, и все подойдет на экране, поэтому я выбрал табличный вид, чтобы сделать это, но в представлении будут только эти четыре секции (с разными данными в зависимости от того, что вы нажали чтобы получить здесь) не следует ли использовать табличное представление? если я должен использовать что-то другое, как контроллер вида с 4 видами вместо этого? будет ли она прокручиваться, чтобы пользователь мог видеть все разделы? Заранее благодарим за любую помощь и предложения.пытается создать разные ячейки в одном представлении таблицы - но не может понять, как код в tableviewcontroller

+0

Вы реализовали 'numberOfSections' и' numberOfRowsInSection: 'из' 'UITableViewDataSource'? – nburk

+0

что вы наделали? – Novarg

ответ

1

Вы должны назначить уникальный идентификатор идентификатора каждой ячейке раскадровки. Затем, вы можете заполнить соответствующие клетки, как это:

- (UITableViewCell *)tableView:(UITableView *)tableView 
     cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    switch (indexPath.section) 
    { 
     case 0: 
     { 
      MyCustomCell1 *cell = [tableView dequeueReusableCellWithIdentifier:@"cell_1"]; 
      // Configure cell 
      return cell; 
     } 


     case 1: 

     ... 

     default: return nil; 
    } 
} 

Рассмотрите возможность создания пользовательских подклассов UITableViewCell обеспечить удобный IBOutlets.

+0

ОК, это похоже на отличный ответ - но еще один новый вопрос, как мне поместить мои массивы с данными в «разделы», поэтому, когда я использую переключатель, и он ищет раздел, он извлекает нужные данные? –

+0

Например, вот как настроен мой массив, просто для тестирования tableviewcontroller, поэтому он довольно упрощен на данный момент: // это будет первый раздел для заполнения первой пользовательской ячейки прототипа var wineryNames = ["Glenora Wine Cellars "] вар wineryAddress = [" 5435 Route 14, Данди, Нью-Йорк 14837 "] вар PhoneNumber = [" (800) 243-5513" ] // это было бы данные для второй ячейки вар tastingFee = [ «$ 5 за рейс 5 $ 3 с возвратом с покупкой»] var dryMust = ["2013 Stainless Steel Pinot Blanc"] var sweetMust = ["2011 Willow White"] –

+0

Не нужно использовать массивы с одним объектом в it, newb :) Для тестирования вы можете настроить ярлыки своих ячеек в инструкции switch: cell.lab el.text = «Винные погреба Glenora». – kelin

0

(1) Вам нужны 4 ячейки. Итак, подготовьте 4 пользовательских ячейки, создав подкласс UITableViewCell. Вы узнаете, как создать пользовательскую ячейку путем поиска в google.

(2) Установить количество секций к 1.

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 

(3) Установить желаемую высоту для каждой ячейки

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    switch(indexPath.row) 
    { 
     case 0: 
     { 
      return 40; 
     } 

     case 1: 
     { 
      return 50; 
     } 

     case 2: 
     { 
      return 30; 
     } 

     case 3: 
     { 
      return 45; 
     } 

     default: 
     { 
      return 0; // Default case 
     } 
    } 
} 

(4) Установить содержимое каждой ячейки. Данные будут поступать из вашего источника данных, то есть массива или словаря.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSString *CellIdentifier = [NSString stringWithFormat:@"CellIdentifier%d%d",indexPath.section,indexPath.row]; 

    if(indexPath.row == 0) 
    { 
     CustomCell1 *objCustomCell1 = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

     if(objCustomCell1 == nil) 
     { 
      objCustomCell1 = [[CustomCell1 alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
      objCustomCell1.selectionStyle = UITableViewCellSelectionStyleNone; 
     } 

     // Set row specific data here... 

     NSDictionary *dicObj = [arrYourDataSource objectAtIndex:indexPath.row]; 
     objCustomCell1.myLabel.text = [dicObj objectForKey:@"your key"]; 

     return objCustomCell1; 
    } 

    else if(indexPath.row == 1) 
    { 
     CustomCell2 *objCustomCell2 = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

     if(objCustomCell2 == nil) 
     { 
      objCustomCell2 = [[CustomCell2 alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
      objCustomCell2.selectionStyle = UITableViewCellSelectionStyleNone; 
     } 

     // Set row specific data here... 

     NSDictionary *dicObj = [arrYourDataSource objectAtIndex:indexPath.row]; 
     UIImage *theImage = [UIImage imageNamed:[dicObj objectForKey:@"your key"]]; 
     objCustomCell2.myImageView.image = theImage; 

     return objCustomCell2; 
    } 

    // Do same for remaining 2 rows. 

    return nil; 
} 

Сначала сделайте это, а затем добавьте комментарий. Мы будем двигаться вперед.

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