动态创建nspopupbutton - 何时填充值?

时间:2014-08-10 06:31:10

标签: objective-c macos nspopupbutton

我一直在为一个问题而奋斗数天和日子,认为这是我的核心数据保存的一个问题,但我现在弄清楚它与获取更多的关系比什么都重要。

我有一些动态创建的NSPopUpButtons,特别是第二个依赖于第一个选择填充其数据的NSPopUpButtons。

我已经意识到,当我调用我的方法来获取第二个弹出窗口的当前选择标题的值时,它总是出现空值。

方法:

- (IBAction)SelectionChanged:(id)sender {

NSString *newItem = [[namePopUp selectedItem] title];
NSPredicate *newPredicate = [NSPredicate predicateWithFormat:@"item == %@", newItem];
[itemSerialController setFilterPredicate:newPredicate];

[serialPopUp selectItemAtIndex:0];

NSLog(@"first number selected is %@", [[serialPopUp selectedItem] title]);


}

始终打印:

first number selected is (null)

这意味着在菜单项实际填充NSPopUpButton之前调用selectItemAtIndex方法。 我可以在哪里放置此方法,或者我可以添加什么方法,以确保弹出窗口已完全加载,然后再检查它的第一个值?

我已经尝试过[arrayController prepareContent]和[arrayController rearrangeContent]`

任何想法?

PS:这个方法是在工作表中调用的。现在,我在激活工作表的方法的最后调用它。

编辑:

这就是我填充第一个弹出窗口内容的方式,以及为第二个弹出窗口设置过滤器谓词。

    NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Equipment"];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Equipment" inManagedObjectContext:[[NSApp delegate] managedObjectContext]];

fetchRequest.propertiesToFetch = [NSArray arrayWithObject:[[entity propertiesByName] objectForKey:@" item"]];

fetchRequest.entity = entity;
fetchRequest.resultType = NSDictionaryResultType;
[fetchRequest setReturnsDistinctResults:YES];

itemDictionaries = [[[NSApp delegate] managedObjectContext] executeFetchRequest:fetchRequest error:nil];



NSLog(@"item: %@", itemDictionaries);

[nameController setContent:itemDictionaries];
self.itemSelection = [itemDictionaries firstObject];


self.predicate  = [NSPredicate predicateWithFormat:@"item == %@", [[nameController selection] valueForKeyPath:@"item"]];
 [itemSerialController setFilterPredicate:self.predicate];

0 个答案:

没有答案