次のバインディングを使用して NSPopUpButton を並べ替えています。
[arrayController bind:@"contentArray" toObject:self withKeyPath:@"displayElements" options:nil];
[popUpButton bind:@"content" toObject:arrayController withKeyPath:@"arrangedObjects" options:nil];
[popUpButton bind:@"contentValues" toObject:arrayController withKeyPath:@"arrangedObjects.title" options:nil];
displayElementsはNSMenuItemの NSMutable 配列です
displayElements = [[NSMutableArray alloc] initWithObjects:[[NSMenuItem alloc]initWithTitle:@"one" action:nil keyEquivalent:@""],
[[NSMenuItem alloc]initWithTitle:@"two" action:nil keyEquivalent:@""],
[[NSMenuItem alloc]initWithTitle:@"three" action:nil keyEquivalent:@""],
nil];
並べ替えはうまく機能しています。
問題は、メニュー項目のいずれかにサブメニューを追加し、その後新しい NSMenuItem をアレイ コントローラーに追加すると、下の画像に示すように、以前に追加されたサブメニューが消えることです。
新しいアイテムを追加する前に:
新しいアイテムを追加した後:
次のステートメントを使用して、新しい NSMenuItem を追加しています。
[arrayController addObject:[[NSMenuItem alloc]initWithTitle:[newItemTextField stringValue] action:nil keyEquivalent:@""]];
要素を並べ替えると、同じ動作が表示されます。この問題を解決するためのアイデアはありますか??