2014-12-12 3 views
0

Я написал:Как сделать Tableview с другой точки зрения детализации для каждой ячейки

func initializeMyDictionary() { 
      self.example = [MyDictionary(name: "Some Name", text: "some text", link: "linkToSomeDocument"), 
MyDictionary(name: "Second Name", text: "some text", link: "secondLink")] 
     } 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let identifier: String = "tableCell" 

     var cell: TableCell! = tableView.dequeueReusableCellWithIdentifier(identifier) as? TableCell 

     if cell == nil { 

      cell = TableCell(style: UITableViewCellStyle.Value1, reuseIdentifier: identifier) 

     } 

     cell!.nameLabel!.text = example[indexPath.row].name 

     return cell! 

    } 

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return example.count 
    } 

Затем связать его с DetailViewController (который я создаю) на Main.storyboard. И DetailView каждой строки myDictionary показан в моем TableView. Все работает нормально.

Но я хочу показать мне второе значение из MyDictionary (ссылка). 1 строка показать мне «имя» и «текст» из MyDictionary, 2 строки показать мне документ или URL из «ссылки». Невозможно ИЛИ как сделать что-то подобное?

Прошу прощения за незнание и плохой английский.

+0

попробуйте использовать 'UITableViewCellStyle.Subtitle' вместо' UITableViewCellStyle.Value1' и этикетки имя доступа через 'клетку! .textLabel! .text = пример [indexPath.row] .name' и подпись субтитров, например 'cell !.detailTextLa bel! .text = example [indexPath.row] .link' надеюсь, что вы хотите – anneblue

+0

@anneblue спасибо за ответ, но я хочу открыть другой DetailView из ячеек для использования различного контента в этих ячейках. Например: # 1, # 2, # 3, # 4 и # 6 ящик CellView DetailViewController, который я создаю (и это работает для меня без проблем); cell # 5 Я хочу открыть RTF-документ, который я связываю с ним. НО моя проблема в следующем: каждая ячейка открыта DetailViewController, и я не могу сделать одну из ячеек отдельной. – Jauzee

ответ

0

два метода:

1.

Удалить раскадровки SEGUE идущий от вашего прототипа ячейки к контроллеру вида и просто реализовать метод UITableViewDelegate-(void) tableView: (UITableView*) tableView didSelectRowAtIndexPath: (NSIndexPath*) indexPath метод и самокаты другой контроллер представления там, как:

- (void) tableView: (UITableView*) tableView didSelectRowAtIndexPath: (NSIndexPath*) indexPath 
{ 
    // the identifier of the viewController in storyboard 
    NSString* identifier = nil; 
    // section 0 
    switch (indexPath.section) { 
     case 0: 
      // rows in section 0 
      switch (indexPath.row) { 
       // row 0 in section 0 
       case 0: identifier = @"IdentifierOfVCForFirstCellInFirstSection"; break; 
       case 1: identifier = @"IdentifierOfVCForSecondCellInFirstSection"; break; 
       default: break; 
      } 
      break; 
     default: break; 
    } 
    // 
    if (identifier != nil) { 
     // perform Segue programmatically 
     [self.navigationController pushViewController: [[self storyboard] instantiateViewControllerWithIdentifier: identifier] animated: YES]; 
    } 
    else { 
     NSAssert(NO, @"No storyboard identifier implemented for row %@ in section %@", @(indexPath.row), @(indexPath.section)); 
    } 
} 

ИЛИ 2.

Добавить (перетащить) другую ячейку прототипа в таблицу TableView в IB. Дайте ему другой идентификатор повтора в Attributes Inspector. Затем соедините его с вашими различными хотел ViewController (щелкните правой кнопкой мыши и под 'Triggered Segues' перетаскиванием selection до нужного контроллера представления.

Затем, в cellForRowAtIndexPath метод решить, какой вид UITableViewCell вы палочку из очереди зависит от вашего indexPath.

для этого второго решения я бы рекомендовал использовать пользовательские UITableView подкласса/XIb для прототипа клеток.

+0

Я новичок в Swift и Objective-C для меня слишком сильно. Я попробую ваше второе решение после того, как вы поймете, как это сделать. Или вы сами можете отредактировать cellForRowAtIndexPath, как вы говорите, или больше объясните это. Я так общительна и благодарю вас за помощь. – Jauzee

+0

Зачем инициализировать оба VC, если только один будет использоваться? –

+1

@ ZaneHelton ты совершенно прав, изменил ответ соответственно. – anneblue