2016-09-07 8 views
2

で別のViewControllerコンポーネントにフォースは、私はNSTableViewとメインコントローラを持っている...私は2ビューコントローラ間のトリガーを渡すためにしようとしているが、私は働く何かを見つけることができません迅速

を更新し、ソースがリンク、ビューベース。

メインコントローラクラス:

class ViewController: NSViewController { 

私はグローバル変数で定義された配列を持っています。 viewDidLoadの 私の配列に2つの要素を追加してから、setDelegateとsetDataSourceを使用します。 正常に動作します。

myLib.myCoins = fillCoinsTable() 
print ("My lib has \(myLib.myCoins.count) objects ") 
mainCoinTable.setDelegate(self) 
mainCoinTable.setDataSource(self) 

私は、WINDOWS CONTROLLERから2番目のView Controllerまでのセグを持っています。 (これはツールバーのボタンです)。 segueは "シート"種類です。

この第2のコントローラーを使用すると、グローバル変数配列にボタンを「保存」して要素を追加できます。第二のコントローラ上の

コード

@IBAction func addCoinButton(sender: AnyObject) { 

     //We add the coin 
     let newCoin:coin = coin(n: textName.stringValue) 
     newCoin.Year = Int.init(textYear.stringValue) 

     myLib.myCoins.append(newCoin) 

     self.dismissController(self) 

    } 

私はテーブルビューのreloadDataにメインコントローラ、上のボタンを追加した場合、それが正常に動作します。 3番目の要素が追加されます。

が、私はそれは自動になりたい....

Iはセグエを試みたが、鉱山は、ビューコントローラとの間が、Windowsコントローラではありません。

助けてもらえますか?あなたは、テーブルを自動的にリロードしたい場合はViewが、私は考えてviewWillAppear

self.tableView.performSelectorOnMainThread(#selector(UITableView.reloadData), withObject: nil, waitUntilDone: true) 

答えて

2

にこれを追加表示されたとき

おかげで、 ニコラス

+0

それは完全に動作します!おかげで多く –

+0

ようこそメイト:)ハッピーコーディング:) –

0

は、あなたは、oneViewControllerから、ボタンを押さずにデータを追加したいですあなたがナビゲーションや後ろのボタンを押した後に望むならば、更新された結果を表示するためにテーブルビューを自動的にリロードしたい。

もし私が間違っていないなら、この解決法はあなたのために働くでしょう。

手順の下にこれに従ってください:

ステップ1:

を代わりにボタンのクリックで、あなたは配列内またはデータベース内のデータを追加したいから、あなたのビューコントローラにこのコードを追加します。

override func viewDidLoad() 
     { 
      super.viewDidLoad() 
      let backItem = UIBarButtonItem(title: "Back", style: .Plain, target: self, action: "goBack") 
      self.navigationItem.leftBarButtonItem = backItem 
    } 

    func goBack() 
     { 
     NSNotificationCenter.defaultCenter().postNotificationName("load", object: nil) 
       self.navigationController?.popViewControllerAnimated(true) 
     } 

ステップ2:今、その最終段階

。 これを結果ビューコントローラに追加して、結果を自動的に更新します。

func loadList(notification: NSNotification){ 
     self.TableView.reloadData() 
    } 

override func viewWillAppear(animated: Bool) { 
     NSNotificationCenter.defaultCenter().addObserver(self, selector: "loadList:",name:"load", object: nil) 

    } 

このコードをコードに実装してください。あなたのために働くことを願っています。

+0

これは私のメインのViewControllerのコードです:オーバーライドオーバーライド機能のviewWillAppear()でself.mainCoinTable.performSelectorOnMainThread(#セレクタ(NSTableView.reloadData)、withObject:nil、waitUntilDone:true)しかし、この関数は、私の2番目のコントローラーでself.dismissを使用しているときは呼び出されません。 –

関連する問題

 関連する問題