2

StackView を使用し、動的に作成された多くのオブジェクトをこの StackView にプッシュするアプリケーションがあり、StackView からポップされたときにこのオブジェクトを破棄する方法が必要です。Controls 1 Stackview を使用すると、destroyOnPop プロパティを使用してオブジェクトをプッシュできます (この質問で示されているように):

tablesStack.push({item: view, destroyOnPop: true})

ただし、Controls 2 StackView には適用されません。この問題の正しい解決策は何ですか?

私が知っている方法は 1 つだけです。object.destroy() を pop するときに遅延を指定して呼び出しますが、この方法はおかしなことのように見えます。重要な場合は、動的に生成されたオブジェクトに任意のコードを追加できます

4

1 に答える 1

3

コントロール 2StackViewでは、所有権のセマンティクスが簡素化されています。StackView動的にインスタンス化したアイテムの所有権を取得します。インスタンスを作成した場合は、インスタンスを制御できます。つまり、破棄したい場合は、 s または URL をStackViewプッシュして、インスタンスを作成させます。ComponentStackView

作成されたインスタンスにアクセスする必要がある場合は、戻り値を簡単に処理できます。

var view = stackView.push(component, {"foo": 1, "bar": 2})
view.doSomething()
于 2016-08-21T11:42:27.253 に答える