Diana
Diana

Reputation: 713

Passing data between table views using plist

How do I pass data between two table views? I have poet.plist with 2 arrays: name and biography. When I run the app, second table view is empty. The first table view should list poets while the second table view lists works of poets.

First class

class Poets
{
    var poetName:String = ""
    var poetImage:String = ""
    var books=[Works]()
}

Second Class:

class Works {

    var nameWork = ""
    var workPoet = ""

    init(nameWork: String, workPoet: String) {
        self.nameWork = nameWork
        self.workPoet = workPoet
    }
}

First View Controller

let worksArray = booksDict[poet.poetName as String] as! NSArray
for work in worksArray {
    let dictionaryFromArray = work as! NSDictionary
    let workObject = Works(nameWork: dictionaryFromArray["nameWork"] as! String, workPoet: dictionaryFromArray["work"] as! String)
    poet.books.append(workObject)
}

How can I make a segue between the UITableViewController with names of poets and the UITableViewController with works of poets?

Upvotes: 0

Views: 94

Answers (1)

truongky
truongky

Reputation: 1147

In 1st View Controller

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    // ShowPoetWorks is your segue identifier which you can set in storyboard
    if segue.identifier == "ShowPoetWorks" {

        var secondVC = segue.destinationViewController as? SecondViewController
        secondVC.poetName = poetName
    }
}

In 2nd View Controller

  • Define 2 field: poetName and workCount
  • Override function `tableView:numberOfRowsInSection

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    
        return workCount  
    }
    
  • In viewDidLoad, load poet works base on poetName and call tableView.reloadData()

Upvotes: 2

Related Questions