在UITableView(swift2)中选择单元格时更新/重新加载ViewController

时间:2016-03-05 15:40:23

标签: ios uitableview uiviewcontroller uibutton nsuserdefaults

我的问题是在UITableView中选择单元格时如何更新或重新加载ViewController。 我有一个带有两个按钮的ViewController,当你点击其中一个按钮时,你将转到tableViewController,当你选择一个选项时,该选项将被保存

  

NSUserDefaults.standardUserDefaults()

和tableViewController将通过

解除
  

self.dismissViewControllerAnimated(true,completion:nil)

。 我用了

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    let cell = self.tableView.cellForRowAtIndexPath(indexPath)

    let lang_name = cell!.textLabel!.text!
        NSUserDefaults.standardUserDefaults().setObject(lang_name,forKey:"lang_saved")
    NSUserDefaults.standardUserDefaults().synchronize()

    self.dismissViewControllerAnimated(true, completion: nil)     
}

super.viewDidLoad()
if let lang_saved = NSUserDefaults.standardUserDefaults().objectForKey("lang_saved") {
     button1.setTitle("\(lang_saved)", forState: .Normal)
}

我的问题是我必须重新启动我的应用才能获得正确的结果,我的意思是必须重新加载viewcontroller以获取按钮名称

  

NSUserDefaults.standardUserDefaults()

我该如何解决?

2 个答案:

答案 0 :(得分:0)

要重新加载按钮,当您想要更新按钮时(您可能在点击上,或在 try { mgr.updateAppWidget(widgetId, new RemoteViews(context.getPackageName(), R.layout.dummy)); } finally { mgr.updateAppWidget(widgetId, GetRemoteView(context, widgetId)); } 功能中),您必须再次调用此代码

viewWillAppear

您的代码存在的问题是您只能在 if let lang_saved = NSUserDefaults.standardUserDefaults().objectForKey("lang_saved") { button1.setTitle("\(lang_saved)", forState: .Normal) } 上调用,并且仅在加载视图时执行。

答案 1 :(得分:0)

点击此链接:Link

您应该将重新加载代码放在:

// Define Delegate Method
func childViewControllerResponse(parameter)
{
   .... // self.parameter = parameter
}

OR

也许打电话

if let lang_saved = NSUserDefaults.standardUserDefaults().objectForKey("lang_saved") {

        button1.setTitle("\(lang_saved)", forState: .Normal)
    }
viewWillAppear

中的