簡體   English   中英

在UITableView(swift2)中選擇單元格時更新/重新加載ViewController

[英]Update/Reload ViewController when cell selected in UITableView (swift2)

我的問題是在UITableView中選擇單元格時如何更新或重新加載ViewController。 我有帶兩個按鈕的ViewController,當您單擊其中一個按鈕時,您將轉到tableViewController,然后選擇一個選項,該選項將通過以下方式保存

NSUserDefaults.standardUserDefaults()

和tableViewController將通過關閉

self.dismissViewControllerAnimated(true,完成:無)

我用了

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()

我該如何解決?

要重新加載您的按鈕,當您想更新按鈕時,必須再次調用此代碼(它可以在單擊時或在viewWillAppear函數中)

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

代碼的問題是,您僅在viewDidLoad上調用,並且僅在加載視圖時執行。

檢查此鏈接: 鏈接

您應該將重新加載代碼放入:

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

要么

也許打電話

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

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

viewWillAppear

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM