首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSPopupButton中的NSProgressIndicator

NSPopupButton中的NSProgressIndicator
EN

Stack Overflow用户
提问于 2012-11-10 09:18:05
回答 1查看 486关注 0票数 0

我正在尝试弄清楚如何让微调器在NSPopupButton的菜单项上显示动画。我不能让旋转器动起来。它看起来像,但它什么也做不了。

到目前为止,我已经将微调器添加到菜单项中,如下所示:

代码语言:javascript
复制
_spinner = [[NSProgressIndicator alloc] initWithFrame:NSMakeRect(0,0,16,16)];
[_spinner setIndeterminate:YES];
[_spinner setStyle:NSProgressIndicatorSpinningStyle];
[_spinner setControlSize:NSSmallControlSize];
[_spinner setDisplayedWhenStopped:YES];
[_spinner setHidden:NO];

NSMenuItem *item = [[button menu] itemWithTag:0];
[item setView:_spinner];

我在听NSPopUpButtonWillPopUpNotification。当我收到通知时,我这样做了,但是微调器出现了,并且没有动画:

代码语言:javascript
复制
[_spinner setUsesThreadedAnimation:YES];
[_spinner startAnimation:nil];

我对此进行了编辑以更新我的问题

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-10 10:25:57

尝试这样做:

代码语言:javascript
复制
[progressIndicator performSelector:@selector(startAnimation:)
                            withObject:self
                            afterDelay:0.0
                               inModes:[NSArray 
                       arrayWithObject:NSEventTrackingRunLoopMode]];

在menuWillOpen:内部,问题似乎是在进度条完成绘制之前调用了startAnimation:。

如何引用视图中的NSProgressIndicator (以及窗口中的那个)?例如,您是否有一个控制器类将IBOutlet连接到进度指示器?如果您使用的是IBOutlet,您确定它已正确连接到nib文件中吗?

另外,您在何时何地调用startAnimation:?(我们需要查看一些代码)。

有时会发生的一件事是,您忘记将IBOutlet连接到笔尖上。然后,当您试图在运行时告诉对象在代码中执行某些操作时,IBOutlet为nil,因此您认为发送到对象的消息实际上是发送到nil的消息。换句话说,它只是被忽略了,实际上看起来它不起作用。

如果您确实有一个(潜在的)对UI对象的有效引用,那么您将看到的另一个常见问题是开发人员试图在“太早”的时候向该对象发送消息。一般来说,init方法在控制器对象的生命周期中还太早,无法向用户界面对象发送消息--这些IBOutlet仍然是空的。在调用-awakeFromNib时,IBOutlet应该是有效的(假设您在IB中将它们挂钩),然后可以将消息发送到UI对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13318279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档