在内容和菜单控制器之间传递数据

时间:2015-11-17 23:12:46

标签: ios swift

我使用https://github.com/romaonthego/RESideMenu获得menuViewControllerContentViewController。 MenuViewController包含从本地数据库检索的不同联赛的列表。这包含一个包含以下变量leagueIdname的联盟对象。当选择联盟时,它应该将数据发送到ContentViewController。但是问题是MenuViewController没有呈现viewController,它只是隐藏了menuViwController,因此当选择了具有联盟的单元格时,我无法将数据从menuViewController传递到contentViewController 。因此我试图将leagueId保存到NSUserDefault键,但是当应用程序退出时会产生问题,因为它不会重置NSUserDefaults。这种问题的最佳方法是什么?我应该重新思考一下吗?

按下menuViewController中的单元格

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    NSUserDefaults.standardUserDefaults().setInteger(menuArray![indexPath.row].id, forKey: "leagueId")


    self.sideMenuViewController.hideMenuViewController()

}

1 个答案:

答案 0 :(得分:0)

您可以通过创建全局类来实现此目的,首先创建一个全局类: -

  import Foundation


     class User {
      class var sharedInstance: User {
      struct Static {
           static var instance: User?
           static var token: dispatch_once_t = 0
      }

     dispatch_once(&Static.token) {
        Static.instance = User()
     }

     return Static.instance!

     }

    var leagueId: Int?
    var name:String?
  }

然后将数据存储在您想要的类中

   class ViewController: UIViewController { 

    let user = User.sharedInstance


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

       if segue.identifier == "showDetails" {
            self.user.leagueId = Id
            self.user.name = Name
       } 
     }
   }

然后检索数据: -

class ViewController: UIViewController { 

        let user = User.sharedInstance
        mylabel.text = self.user.leagueId 
        mylabael2.text = self.user.name

}