ノブ警告!私のアプリは、すべてバインディングを介して NSArrayController を介して標準の NSTableView にデータを表示します。すべてクール。
バックグラウンドで BOOL を駆動するチェック ボックスで切り替えられる「完了したタスク」という filterPredicate があります。これは、アプリの実行中、フィルター オン、フィルター オフのときにうまく機能しますが、init または awakeFromNib で BOOL を NO に設定すると、NSArrayContoller は filterPredicate を無視しますが、後で機能します。
述語を使用してフィルター処理された配列を AC に配信することもできますが、推測されたバインディングと直接の filterPredicate の方が適切です。
AC は NIB ファイルで初期化されており、KVO フィードバックを見ると、非常に早い段階で作成されます。filterPredicate は、AppController の初期化時には存在しませんが、awakeFromNIb に到達するまでには存在します。
私が見逃しているアイデアはありますか?
編集: これは、チェック ボックス アクションによって呼び出されるメソッドです。
- (void)displayClosedJobs {
if (self.showClosedJobs)
{
self.showClosedPredicate=nil;
}
else
{
NSString *predValue=@"Closed";
self.showClosedPredicate=[NSPredicate predicateWithFormat:@"!(DisplayName contains[c] %@)",predValue];
}
[self changeTableSortOrder];}
これは、init および awakeFromNib でも呼び出されます。