Я начал работу с приложением this question. Я начал Tableview категорий:Передача данных по протоколу при использовании контейнера для просмотра другого ViewController в Swift
Для обмена данными, я решил использовать протокол:
protocol Category {
func data(object:AnyObject)
}
В первом ViewController имеет следующий код:
class ViewController: UIViewController {
var items:[String] = ["Desktop","Tablet","Phone"]
let CategoriesData:Category? = nil
override func viewDidLoad() {
super.viewDidLoad()
CategoriesData?.data(items)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Во втором ViewController (tableView in Container) есть следующий код:
class CategoriesViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, Category {
@IBOutlet var table: UITableView!
var items:[String] = []
func data(object: AnyObject) {
self.items = (object as? [String])!
print(object)
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.items.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell:TableViewCell = self.table.dequeueReusableCellWithIdentifier("SegueStage") as! TableViewCell
cell.nameLabel.text = items[indexPath.row]
return cell
}
}
Для меня, видимо, все в порядке. Но на симуляторе ничего не появилось.
Мой вопрос: Если использование Container представить другой ViewController в передаче данных по протоколам должно быть сделано?
Вы начинаете с 'CategoriesData' как ноль. Как это изменилось? (Использование протокола в порядке, но вам все еще нужна ссылка на объект, который реализует протокол.) –