2017-01-10 92 views
0

我有4個全局變量(字符串數組),我在一個視圖控制器(如firstViewController)中追加。追加值後,當我嘗試訪問它們在另一個視圖控制器中的零值被傳遞全局變量在不同視圖控制器中使用時返回nil值

第一的ViewController

print("\(json)") 
      if let stockInfo = json?[0] { 

       if let value = stockInfo["l"] as? String { 
        print("Teja\(value)") 
        stockCurrentValue.append(value) 
        print("Teja\(stockCurrentValue)") 

       } 

       if let cp = stockInfo["cp"] as? String{ 
        print("Teja\(cp)") 
        stockCp.append(cp) 
        print("Tea\(stockCp)") 
       } 

       if let c = stockInfo["c"] as? String{ 
        print("Teja\(c)") 
        stockC.append(c) 

       } 
       if let pcls_fix = stockInfo["pcls_fix"] as? String{ 

        print("Teja\(pcls_fix)") 
        stockPrevValue.append(pcls_fix) 

       } 


      } 

變量stockCurrentValue,stockC,stockCP,stockPrevValue是我聲明瞭四個全局變量。

但是當我嘗試訪問它們在新的viewController

SecondViewController

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    print(selectedStockNames.count) 
    return selectedStockNames.count 


} 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "myStocks") as! StockCell 

     cell.stockNameCell.text = selectedStockNames[indexPath.row] 


    print("Teja123\(stockCurrentValue)") 

    stockValueFromGF = selectedStockValues[indexPath.row] 

    print("Teja123\(stockCp)") 

    return cell 
} 

所以,當我在firstViewContoller打印StockCp值我獲得的價值,但是當我嘗試打印seconViewController相同的變量我得到「[]」(零值)

+0

如何確定'SecondViewController'中的'stockCurrentValue'?你確定它來自'FirstViewController'嗎?即使'FirstViewController'的這些屬性是可公開訪問的,你需要在'SecondCurrentValue = firstVC.stockCurrentValue'等'SecondViewController'中顯式地調用它,其中firstVC是FirstViewController的一個實例,否則FirstViewController.shared .stockCurrentValue'如果它是一個單身人士 –

+0

我有所有的變量在一個單獨的swift文件中聲明。我怎樣才能創建一個實例firstVc,請你幫我一下。 –

+0

我確定你不會創建一個'UIViewController'的實例來從它的子類中檢索幾個值。如果你已經使用了'UIViewController'子類,那麼你應該已經創建了它,如果你沒有意識到,你可能會通過故事板創建它。爲了引用'FirstViewController'的實例,你應該考慮從ViewController中提取它(如果沒有的話,它是rootViewController),或者它可能只是提供'SecondViewController'的那個。在這種情況下,您可以在演示文稿之前傳遞值。 –

回答

0

使用協議,並在您想要設置值的視圖控制器中定義它。

在全局變量的值更改的函數內部使用該方法。

調用該函數並在視圖控制器中設置要在其中訪問變量的委託。

相關問題