私はネットワークと呼ばれる1つのクラスだけのユーザーのリストを変更したいと思います。そして、私はuserListが変更された後、TableViewの更新を行う方法を理解していません。以下のコードで例と詳細な質問を示します。一部のデータが変更された後、どのようにTableViewを更新するのですか?
答えて
通知を使用できます。追加のviewDidLoadで、その後
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "UserlistUpdate"), object: nil)
:
NotificationCenter.default.addObserver(self, selector: #selector(TableViewController.reloadData), name: NSNotification.Name(rawValue: "UserlistUpdate"), object: nil)
P.S.をユーザリストが更新されるたびに、このような通知を投稿これまでのアーキテクチャでは、TableViewControllerに、独自のユーザ配列を保持するのではなく、ネットワークの変数を保持させるようにしました。次に、AppDelegateで:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let network = Network()
// Access the TableViewController and set its network variable
let tableViewController = window!.rootViewController as! TableViewController
tableViewController.network = network
この方法は、通知にそれぞれ登録できるように、複数のものがユーザーリストの変更に応答できる場合に便利です。 {(){ } 静的レットsharedInstance = MyClassの() 民間のinit} ' –
は、建築用として、私はシングルトンのアプローチを提案するかもしれませんユーザリストの更新に応答する。複数のものが応答する場合は、通知を使用する方が良いかもしれません –
@JDMがコメントに記載されているように、あなたのアーキテクチャは混乱しています。
プロトコルを使用して、この委任を行うようにしてください:
// Network.swift
protocol UsersUpdatedProtocol {
func usersListUpdated(list: [User])
}
class Network {
var userList: [User] = [] {
didSet {
delegate?.usersListUpdated(list: userList)
}
}
var delegate: UsersUpdatedProtocol?
init(delegate d: UsersUpdatedProtocol) {
super.init()
delegate = d
}
}
// File TableViewController.swift
class TableViewController: UITableViewController, UsersUpdatedProtocol {
var userList: [User] = []
override func viewDidLoad() {
super.viewDidLoad()
let _ = Network(delegate: self)
}
func usersListUpdated(list: [User]) {
self.userList = list
self.tableView.reloadData()
}
}
ただ一つのことが起こっている場合は、このソリューションが動作するパブリッククラス' MyClassの: –
- 1. QtQuick - モデルが変更された後、TableViewをrowCountに更新します
- 2. angle2でrouteParamsが変更された後、ビューを更新するにはどうすればよいですか?
- 3. ボタンの変更されたデータを更新するにはどうすればよいですか?
- 4. 角2 - 更新*データが変更された後のテーブルng
- 5. どのようにしてTableViewスタティック・セルのデータを更新できますか?
- 6. コレクションの更新時にテンプレートの一部を更新するにはどうすればよいですか?
- 7. モデルコードが変更された後にデータ更新によるマイグレーションを実行
- 8. アレイが変更された後、Tableviewでデータをリロードできませんか?
- 9. React Nativeでデータが変更された後にコンポーネントが更新されない
- 10. TableViewで行を削除した後でindexPathを更新するにはどうすればよいですか?
- 11. 更新データが変更された場合のみ更新をトリガーする
- 12. 更新DataGridViewのバインドされたデータが編集された後(更新)C#の
- 13. データが変更された後にVue v-forリストが更新されない
- 14. データが変更されたときにリストビューを更新する
- 15. 別の要素が更新された後に更新する
- 16. データ変更(AS3)後にAdvancedDataGridのデータを更新しますか?
- 17. SharedPreferenceが変更されるたびにTextViewを更新するにはどうすればよいですか?
- 18. データベース内のデータが更新されたかどうかをチェック
- 19. DbContextの外で変更されたエンティティを更新するにはどうすればよいですか?
- 20. アダプタのデータが変更された後にListViewをリセットする
- 21. 更新ステートメントの "セット"部分で更新されるテーブルをどのように参照しますか?
- 22. コードネーム1:ライブラリの更新後にボタンが変更された
- 23. 変更されたデータを表示し、変更されたデータを更新するための正しいフォームイベント?
- 24. ディレクトリを変更した後でdiretory_iteratorを "更新"するにはどうすればよいですか?
- 25. Beanの値が変更された後のページの更新
- 26. このハードコードされたデータをデータベースのデータに変更するにはどうすればよいですか?
- 27. d3 +バックボーン:データが変更された要素を更新する
- 28. Ruby:イメージが変更された後にイメージのパスを更新するには?
- 29. 一部の列が変更されたときにどのようにループしますか?
- 30. AJAXまたはJSFでページの一部を更新するにはどうすればよいですか?
あなたのアーキテクチャはどのようにこのリストが更新されつつある(なぜこのためappdelegateでVARを保持する)かなり未組織と悪いのですか?アップデートを確認するネットワークの発信者は誰ですか? – JDM