为什么NSPopupButton项目中消失?

我有一个NSPopupButton,其选择指数绑定到一个属性的NSWindowController子类。 在IB,按钮开出了几个项目。 该物业的价值来自于和NSUserDefaults的可能比在NSPopupButton项目数量多,当它第一次实例。 这将导致在列表的末尾被插入空白项目。 如果我追加项目按钮,自动创建的空白项目依然存在。 但是,当我做出选择消失。 如果我作出选择的项目仍然消失之前改变空白项目的标题。

我蒸的问题到下面的代码:

@interface PopUpWindowController : NSWindowController { NSUInteger popUpValue; IBOutlet NSPopUpButton *popUp; } @property NSUInteger popUpValue; //popUp's Selected Index is bound to this property -(IBAction)addItemsToPopUp:(id)sender; -(IBAction)nameBlankItem:(id)sender; @end @implementation PopUpWindowController @synthesize popUpValue; -(id)init { if (self = [super initWithWindowNibName:@"PopUpWindow"]) { popUpValue = 5; //In my real program this comes from NSUserDefaults } return self; } -(IBAction)addItemsToPopUp:(id)sender { //Add three items to popUp NSUInteger lastNewItem = [popUp numberOfItems] + 3; for (NSUInteger newItem = [popUp numberOfItems]; newItem < lastNewItem; newItem++) { [popUp addItemWithTitle:[NSString stringWithFormat:@"%d", newItem + 1]]; } self.popUpValue = 5; } -(IBAction)nameBlankItem:(id)sender { NSArray *items = [popUp itemArray]; for (NSUInteger i = 0; i < [items count]; i++) { if (![[[items objectAtIndex:i] title] length]) { //item title is blank so set it to the item number [[items objectAtIndex:i] setTitle:[NSString stringWithFormat:@"%d", i + 1]]; } } } @end

这里的弹出菜单中的窗口第一次出现的时候(它在IB三个项目命名为“1”,“2”,和“3”):

为什么NSPopupButton项目中消失?

这是打完电话后addItemsToPopUp:

为什么NSPopupButton项目中消失?

这是打完电话后nameBlankItem:

为什么NSPopupButton项目中消失?

然后我打电话addItemsToPopUp:再次:

为什么NSPopupButton项目中消失?

现在我终于做出选择,并再次弹出菜单:

为什么NSPopupButton项目中消失?

哪里4去了?

在我的真正的程序,我确实想要的菜单项为“1”“N”(N是由项目的数量计算NSArray中定义)。 我接受的替代办法,但我希望该解决方案继续使用NSPopupButton。

(如果它的事项,我使用Xcode 3.1.2在OS X 10.5.8,而且还和Xcode 3.2下OS X 10.6.8测试。)

--------------解决方案-------------

我的NSPopUpButton的含量数值的属性绑定到我的对象的数组来解决了这个问题。 因此,而不是手动操纵与可可无论是做幕后结合按钮的项数组,我在的内容完全控制。

分类:可可 时间:2015-03-15 人气:5
本文关键词: 可可,nspopupbutton
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.389 (s). 10 q(s)