无法从 appdelegate.m 为 NSProgressIndicator 设置动画

Posted

技术标签:

【中文标题】无法从 appdelegate.m 为 NSProgressIndicator 设置动画【英文标题】:Unable to animate NSProgressIndicator from appdelegate.m 【发布时间】:2013-12-11 21:03:29 【问题描述】:

我之前在 ios 上工作过,但刚刚开始在 MacOsX 可可应用程序上工作。我遇到了关于 NSProgressIndicator 的问题。

当我创建应用程序时,我有 appdelegate。 h & .m 和一个 mainmenu.xib。我将 Indeterminate Progress Indicator 添加到 MainMenu.xib 并在我的 Appdelegate.h 文件中使用 IBOutlet 将其连接到 NSProgressIndicator 的实例。

@property (nonatomic, retain) IBOutlet NSProgressIndicator* activityIndicator;

在我的 Appdelegate.m 文件中,我这样做:

activityIndicator = [[NSProgressIndicator alloc]initWithFrame:NSMakeRect(206,82,120,120)];

[activityIndicator setStyle:NSProgressIndicatorSpinningStyle];

[activityIndicator startAnimation:nil];

当我运行程序时,我可以看到进度条(如预期的那样),但它没有动画。任何解决方案都会有很大帮助,如果它是一个逻辑错误,请解释一下,以便我学习。非常感谢。

【问题讨论】:

可能/可能有一种方法可以让您的应用代理执行此操作,但这绝对不是您的应用代理应该做的事情...... 这只是我正在尝试的一个测试,因为我刚开始使用 mac os x。当我开始构建应用程序时,我不会将 appdelegate 用于所有此类操作。只是想知道为什么它不会动画 【参考方案1】:

这是你目前正在做的事情:

    您在界面生成器中添加了进度视图 您为它声明了一个属性并在界面生成器中连接了它 然后您可以在运行时以编程方式创建一个新的进度视图并将其分配给您的变量。

您基本上创建了一个全新的进度视图实例并希望对其进行动画处理,而不是从 nib 文件加载的那个。它实际上没有动画的原因是,因为您在运行应用程序时看到的进度视图是来自界面生成器的视图(您没有动画)。您以编程方式创建的一个不会添加到视图层次结构中,因此它是不可见的。

您必须在 Interface Builder 中创建进度视图,分配插座然后使用它,即删除此行:

activityIndicator = [[NSProgressIndicator alloc]initWithFrame:NSMakeRect(206,82,120,120)];

或者您可以通过编程方式创建进度视图,但是您必须将其添加到您的视图中。

如果要修改从 nib 文件加载的进度视图的位置,请设置 frame 属性而不是创建新实例。

activityIndicator.frame = NSMakeRect(206,82,120,120);

【讨论】:

以上是关于无法从 appdelegate.m 为 NSProgressIndicator 设置动画的主要内容,如果未能解决你的问题,请参考以下文章

如何从 AppDelegate.m 访问 tabBarController?

如何从 AppDelegate.m 调用 ViewController.m 方法

从 AppDelegate.m 中的 applicationDidEnterBackground 中去掉键盘

将 AppDelegate.h 和 AppDelegate.m 替换为 AppDelegate.swift

AppDelegate.m 的“application:didFinishLaunchingWithOptions”的默认实现是不是从 iOS 6 更改为 iOS 8?

如何从 Xcode 中的 AppDelegate.m 文件更新 UILabel 的文本?