2017-09-26 75 views
-1

我有一個視圖控制器UIScrollView,UIButtons,UILabelsUIViews。當我第二次訪問相同的視圖控制器時,例如使用不同的標籤文本值,當我第一次訪問視圖控制器時,仍然可以看到對象與之前一樣。這是我使用彈出視圖控制器代碼:是不是被deinit時彈出視圖控制器未被清除

navigationController?.popViewController(animated: true) 
dismiss(animated: true, completion: nil) 
+0

「當我第二次訪問相同的視圖控制器時」 - 您是否在導航控制器中添加了一個新的VC?在彈出VC之後,檢查導航堆棧VC是否仍然存在。 – Vizllx

+0

我現在檢查導航堆棧。我使用push segue來訪問上述頁面,彈出它,然後再次使用該segue返回,並且初始訪問的內容仍然在那裏。希望澄清我的情況 –

+0

視圖控制器在彈出時不在導航堆棧中 –

回答

0

聽起來像是你的第二個視圖控制器。

將以下代碼添加到您的第二個視圖控制器(僅限於deinit部分),並查看彈出時是否調用它。

class MySecondViewController: UIViewController { 
    deinit { 
     print("Second view controller popped!") 
    } 

    override func viewDidLoad() { ... } 
} 

如果它沒有被調用,那麼你在視圖控制器之間有一些強烈的引用。

+0

我應該在哪裏添加此代碼?在viewDidLoad函數內? –

+0

@BrandonCornelio編輯代碼以便更好地理解。 – sCha

+0

對不起'Logger.MSG'是我的個人圖書館,使用'print' – sCha