2016-05-15 18 views
0

私は、「追加ボタン」と2番目のビューコントローラを介してセルを追加するtableviewを持っています。私は現在、私のtableviewのための次のコード設定を持っており、アプリケーションがロードされるたびにアルファベット順にセルをソートします。私の問題は、新しいレシピを追加すると自動的に再ソートされないということです。これを行う最善の方法は何ですか?私のreloadData()は別の場所にあるべきですか?または、View ControllerからSegueに戻してテーブルビューに戻しますか?アルファベット順のテーブルビューの再ソート

override func viewDidLoad() { 

     configureView() 

     if let savedRecipes = loadRecipes() { 
      recipes2 += savedRecipes 

      recipes2 = recipes2.sort({current, next in return current.name < next.name}) 

      recipeList.reloadData() 
     } 
} 
+0

使用[ 'NSOrderedSet'(https://developer.apple.com/library/mac/documentation/Foundation/Reference/NSOrderedSet_Class/)。 – ozgur

答えて

1

reloadData()をテーブルビューコントローラのviewWillAppear()またはviewDidAppear()のメソッドに追加できます。その方法では、ビューに戻るたびに最新のデータを表示する必要があります。例えば:

override func viewDidAppear(animated: Bool) { 
    super.viewDidAppear(animated) 
    reloadData() 
} 
+0

ありがとう!それはうまくいった。私はviewWillAppearにsort関数とreloadData()を置くことになり、完全に機能しました。 –

0

レシピは、あなたがこのようにそれを行うことができ、独自のクラスである場合:

if let savedRecipes = loadRecipes() { 
    recipes2 += savedRecipes 

    recipes2.sortUsingComparator { 
      let r1 = $0 as! Recipe 
      let r2 = $1 as! Recipe 
      if r1.title < r2.title { 
       return .OrderedAscending 
      } 
      if r1.title == r2.title { 
       return .OrderedSame 
      } 
      return .OrderedDescending 
     } 
     self.tableView.reloadData() 
} 

これは昇順で、あなたのレシピをソートします。

+0

レシピが追加されていない場合、レシピをどのように追加するのかについては、コードの詳細が必要になります。 –

関連する問題