2017-02-13 2 views
0

Все работает здесь, но мой вопрос заключается в том, что я пытаюсь получить доступ к различной информации с помощью другой ячейки, которую я нажимаю. Например:TableViewCell приводит к контроллеру Single View с различными деталями SWIFT

Если нажать на первую ячейку просмотра таблицы, которая содержит:

-> Second View с информацией, содержащей образ и имя

Если нажать на ячейке второй таблицы, которая содержит:

B -> Второй вид с информацией, содержащей BI маг и имя B

Если нажать на третью ячейку таблицы, которая содержит вид:

C -> Second View с информацией, содержащей C Image и имя C

Если вы заметили, что на моем FirstViewController информация & информацияArray вне класса, потому что я намереваюсь получить доступ к этой информации на SecondViewController. Тем не менее, это не имеет большого значения на всякий случай, если вам интересно.


вещи, которые я пытался:

  • Я попытался сочинительство каждую информацию вручную на другой контроллер зрения, однако я заметил, что приведет к увеличению размера приложения, так как у меня есть информация, которая более 100, и это будет означать создание более 100 viewcontroller. Также предполагает использование SEGUE здесь

  • Попробованной вызова массива из второго контроллера представления, и что результат показать все A в любом из клетки прессованной, что пристанище я выясняю, что это лучший способ сделать.

  • Пробный поиск в Интернете & youtubing & stackoverflowing и все еще не мог найти никакой помощи, в которой я нуждался, поэтому решил опубликовать это.

MyStruggle или что я хочу добиться:

Как написано выше, я хотел бы получить некоторую помощь/технику, что вы знаете, может помочь мне выяснить путь к, с различным tableviewcell, что я нажата, отображает информацию, хранящуюся в этих массивах соответственно.

Если вы заметили, я пытаюсь использовать один контроллер вида вместо нескольких контроллеров.

FirstViewController.скор

struct information { 
    var name: [String]! 
    var image: [UIImage]! 
init(named: [String], imaged: [UIImage]){ 
name = named 
image = imaged 
} 
    } 

var informationArray = [information]() 

class TableViewController: UITableViewController { 

override func viewDidLoad(){ 
informationArray = [information(name: ["A","B","C"], 
        image: [UIImage(named: "A"),UIImage(named:"B"),UIImage(named: "C")] 

    } 

} 

SecondViewController.swift

class SecondViewController: UITableViewController { 
    @IBOutlet weak var Image: UIImageView! 
    @IBOutlet weak var Name: UITextField! 



    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 
} 

ответ

0

UITableView поставляется с несколькими встроенными методами бесплатно, чтобы помочь достичь именно то, что вы пытаетесь сделать. Вот учебник объяснить некоторые понятия:

http://www.codingexplorer.com/segue-uitableviewcell-taps-swift/

Это объясняет, как настроить переход на второй контроллер представления, и передать данные, которые вы хотите отобразить.

Краткий обзор высоких точек:

Вам нужно будет создать свойство в вашем secondVC для хранения данных, которые вы хотите отобразить:

class SecondViewController: UITableViewController { 
@IBOutlet weak var Image: UIImageView! 
@IBOutlet weak var Name: UITextField! 
var information: Information? 

override func viewDidLoad() { 
    super.viewDidLoad() 
} 

}

Вы можете настроить «Show» segue в раскадровке из вашей ячейки прототипа таблицы (в вашем первом viewController) ко второму viewController. Установите идентификатор segue: «SecondViewController». При нажатии на ячейку в Tableview, это вызовет переход, чтобы показать вторую ViewController, и вызовите подготовки (для Segue: _, :) Функция:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "SecondViewController" { 
     if let indexPath = self.tableview.indexPathForSelectedRow { 
      let information = self.datasource[indexPath.row] 
      if let secondVC = (segue.destination as? SecondViewController) { 
       secondVC.information = info 
      } 
     } 
    } 
} 

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

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