抱歉新手问题,但我真的被卡住了。
我在应用中有一个UIViewController和4个tableviews。当我点击UIViewcontroller上的一个按钮时,它会转到名为“Beach”的UITableviewController。当用户单击表格的单元格时,它会回到UIViewController,并将所选单元格标题显示为按钮标题。我遇到的问题是当我点击一个nother按钮到tableview然后点击单元格时,之前的按钮标题会回到之前的标题。
我在表视图控制器中准备了segue函数,这会将选定的表标题(名为:Titleoftable)返回给主VC,即字符串。
我目前正在进行的方式是在下面创建一个NSUserDefault,但问题仍然保持不变 - 每次点击另一个表V时值都会变为“” -
let path = tableView.indexPathForSelectedRow
let cell = tableView.cellForRowAtIndexPath(path!)
let persistenceStoreKey = "MyStringKey"
let stringToStore = "\((cell?.textLabel?.text!)!)"
// Store data
NSUserDefaults.standardUserDefaults().setObject(stringToStore, forKey: persistenceStoreKey)
NSUserDefaults.standardUserDefaults().synchronize()
// Get data
let myStringt = NSUserDefaults.standardUserDefaults().stringForKey(persistenceStoreKey)
destination.textOfBeach = (myStringt)!
destination.isBeachSelected = true
}
我多年来一直坚持这个问题!请帮助!!
PS-我正在使用swift-2和Xcode7
答案 0 :(得分:0)
确保在单击tableview的单元格后没有推送新的ViewController。它给我的印象是它可能是这种情况,因为你只看到你按下的最后一个单元格的标题。确保你实际弹出tableview的控制器而不是推新的。
如果您想继续使用NSUserDefaults,可以直接调用
navigationController?.popViewController(animated: true)
在您的cellSelection函数中,并在主ViewController的viewWillAppear中读取默认值。
override func viewWillAppear(_ animated: Bool) {
let userDefault = NSUserDefaults.standard()
if let beachSelection = userDefault.string(forKey: "BeachControllerSelection") {
textOfBeach = beachSelection
isBeachSelected = true
}
//same for the rest of the other table view's selections
}