2015-05-21 2 views
0
override func tableView(tableView: UITableView, cellForRowAtIndexPath 
indexPath : NSIndexPath) -> UITableViewCell { 

     let cell = tableView.dequeueReusableCellWithIdentifier ("ChecklistItem") as UITableViewCell 
     let label = cell.viewWithTag(1000) as UILabel 

     if indexPath.row == 0 { 
      label.text = "jaswanth" 
     } else if indexPath.row == 1 { 
      label.text = "nikhil" 

     } else if indexPath.row == 2 { 
      label.text = "krishna" 
     } 


     return cell 
    } 

У меня есть UITableViewController, я использовал выше код для отображения ячеек в таблице, и у меня был другой UIViewController, когда пользователь нажимает на jaswanth текст (этикетки текст) в UIViewController были быть изменены и так же, когда nikhil прослушивается текст (текст меток) в UIViewController изменилсянажав на таблицу вида клетки

У меня был только один UITableViewController и один UIViewController как я могу это сделать?

+1

Вы внедрили 'optional func tableView (_ tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)'? –

+0

нет Я запрашиваю логику –

+0

Этот 'UIViewController' ваш, он представлен или находится в стеке навигации навигационного контроллера (если вы используете его), или он не представлен или в стеке навигации, и вы собираетесь представить его или добавить в стек навигации? –

ответ

0

Вы хотите, чтобы иметь возможность обнаруживать, когда эти ячейки в таблице нажаты. Это можно сделать с помощью рекомендации Майка Уэлша посредством реализации метода:

func tableView(_ tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
Это позволяет вам определить, какая ячейка выбрана из NSIndexPath.

Отныне мне кажется, что вы хотите изменить текст (на кнопке или поле), который контролируется другим UIViewController. Один из способов сделать это - иметь ссылку на этот UIViewController и создать метод для обновления этого текстового поля. Если UITableViewController является контроллером вид ребенка, он может быть столь же просто, как вызов

 let parent = parentViewController!

Else, если контроллеры связаны между собой Segue, он также может быть сделано путем переопределения prepareForSegue оригинального ViewController. С помощью segue.identifier для отображения на segue, который вы сделали в StoryBoard/программно, вы можете установить делегат/указатель на исходный UIViewController.

override func prepareForSegue(_ segue: UIStoryboardSegue, sender sender: AnyObject?) { 
    if segue.identifier == "SomeStringID" { 
     self.tableViewController = segue.destinationViewController as? UITableViewController 
     self.tableViewController.delegate = self 
    } 
}

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

Надеются, что это помогает!

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