在NSMenuItem中使用NSProgressIndicator
我正在尝试在状态栏菜单中使用NSProgressIndicator(不确定)。我正在使用NSView对象作为menuitem的视图,然后查看进度指示器以显示它。但每当我尝试调用startAnimation时:对于进度,没有任何反应。当我尝试在普通的NSWindow上做同样的事情时,它可以很好地工作,而不是在一个menuitem中。
我是cocoa和objective-c的新手,所以我可能会忽略一些“显而易见的”但我已经搜索了很多但是没有成功。我发现一些关于menuitems的东西在显示时无法更新,你需要使用无边框窗口。但我无法在任何文档中证实这一点。
编辑:
好的,现在差不多了。当使用setUsesThreadedAnimation:并从MenuDelegate的menuWillOpen中创建一个新线程。该线程运行本地方法:
-(void) doWork(NSProgressIndicator*) p{
[p startAnimation:self];
}
这将在打开菜单时以随机(?)为基础启动progressindicator。如果我直接拨打startAnimation:
而不通过doWork:
(仍然使用新线程),它永远不会有效。不是setUsesThreadedAnimation:
让进度条为动画创建自己的线程吗?
没有找到相关结果
已邀请:
3 个回复
括宠
在menuWillOpen:中,问题似乎是调用startAnimation:在进度条完成绘制之前。
帆攀缺锯欧
(以及窗口中的那个)?例如,你有一个控制器类,它与progress6ѭ连接到进度指示器吗?如果你使用的是ѭ6,你确定它在nib文件中正确连接了吗? 此外,你在何时何地致电
? (我们需要看一些代码)。 有时会发生的一件事是你忘记在笔尖上勾起一个
。然后,当你试图告诉对象在运行时在代码中做某事时,
是
,所以你认为发送给你的对象的消息实际上是一条消息被发送到
。换句话说,它只是被忽略了,实际上看起来它不起作用。 如果您对UI对象有(可能)有效的引用,那么您将看到的另一个常见问题是当开发人员试图在“太早”的时间向该对象发送消息时。一般来说,在控制器对象的生命周期中,
方法太早,无法向用户界面对象发送消息 - 那些
仍然是
。当调用
时,
应该是有效的(如果你将它连接到IB中),然后你可以将消息发送到UI对象。
抚驰