对于新手的问题,很抱歉,但我真的被卡住了。
我在一个应用程序中有一个UIViewController和4个表视图。当我点击UIViewcontroller上的一个按钮时,它会跳转到一个叫做“海滩”的UITableviewController。当用户单击表中的某个单元格时,它会返回到UIViewController,并将选定的单元格标题显示为按钮标题。我遇到的问题是,当我单击一个表格视图的另一个按钮,然后单击该单元格时,上一个按钮的标题会回到上一个标题。
我在tables视图控制器中有一个prepare for 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- I使用swift-2和Xcode7
发布于 2016-10-29 12:42:51
确保在单击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
}
https://stackoverflow.com/questions/40315235
复制相似问题