2017-07-15 53 views
0

林製作做列表應用程序,它由2個視圖控制器 一個與表視圖保存數組,並顯示它和第二個與包含textField,按鈕功能追加文本字段的文本到陣列 以顯示新字符串所附它在第一視圖控制器 繼承人我的代碼:如何從其它類修改陣列

class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate { 

@IBOutlet weak var tableView: UITableView! 

var exmpArray = ["DDDD","rrr","TTT"] 

override func viewDidLoad() { 
    super.viewDidLoad() 

    tableView.delegate = self 
    tableView.dataSource = self 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 
@IBAction func addBtnBar(_ sender: Any) { 
    performSegue(withIdentifier: "showMe", sender: nil) 
} 

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return exmpArray.count 
} 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCell(withIdentifier: "cell") 
    cell?.textLabel?.text = exmpArray[indexPath.row] 
    return cell! 
}} 

,第二個是:

class SecondViewController: UIViewController { 

@IBOutlet weak var myTextField: UITextField! 

var realAry:[String] = [] 

override func viewDidLoad() { 
    super.viewDidLoad() 

} 

let myObj = ViewController() 

@IBAction func addBtn(_ sender: Any) { 

    myObj.exmpArray.append(myTextField.text!) 
    print(myObj.exmpArray)   

} 

附加它不會在第一控制器

回答

0

顯示新字之後兩個陣列是不同你只是複製第一個VC陣列第二VC陣列。數組是swift中的值類型。而不是創建2個陣列使第一個VC數組爲靜態。

static var exmpArray = ["DDDD","rrr","TTT"] 

現在,你可以通過調用像下面

使用&更新這在所有VC

FirstVC.exmpArray

+0

感謝奏效---我可以看到新的值時,我在控制檯打印出來,但現在我只需要使用tableView.reloadData(),以顯示它的表...你請指教我在哪裏可以在我的課上實現這個功能? –

+1

誰downvoted這個?它是一個合理的答案,並提供有用的信息。 –

1

的一個問題是這一行:

let myObj = ViewController() 

這將創建視圖控制器的新實例這無關與叫你的視圖控制器。擺脫那條線。這是不對的。

你需要建立一個委託財產SecondViewController回指向ViewController,定義一個協議爲委託符合,並使用該協議,SecondViewController能夠通知它的委託時,陣列的變化。

ViewController中,添加一個prepareForSegue()函數,它接受目標視圖控制器,將其轉換爲SecondViewController類型,並將SecondViewController的代理設置爲self。