2017-07-15 32 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。