ios - 从另一个类实例更新一个类中定义的 UIProgressView

标签 ios iphone objective-c uiprogressview

如果我的术语不正确,我深表歉意 - 我学习 Objective C 才几天,所以我还是有点陌生​​。

我有一个 ViewController,它有一个进度条 (UIProgressView),它使用 Xcode 的 Storyboard“快速拖动”功能连接到一个 IBOutlet。 ViewController 实例化我编写的自定义类的对象。它将一条消息传递给该对象的选择器,该对象会执行大量工作,大约需要 15-20 秒。我希望能够随着工作的进行更新进度条,但我不知道如何访问调用类的 UIProgressView 来执行此操作。我不需要使用计时器,因为对象的方法运行一个我知道其限制的长循环,并且可以根据循环中的当前位置更新进度条。

我确信它是 Objective-C 编程中的一个非常基本的概念,但是朝着正确的方向或文档的插入确实会帮助我。

最佳答案

使用委托(delegate)模式。

为您的 ProgressBar 更新创建一个协议(protocol):

@protocol MyProgressBarDelegate

- (void) onUpdateProgress:(NSInteger)progress;

@end

您的 ViewController 实现委托(delegate)并包含此 onUpdateProgress 方法。

您的自定义类有一个委托(delegate)变量,您可以在其初始化程序中设置它,并将其设置为 ViewController 实例。

id <MyProgressBarDelegate> delegate;

更新您的 CustomClass 指定初始化程序以将委托(delegate):(id)委托(delegate)作为参数传递。

- (void) initWithDelegate:(id<MyProgressBarDelegate>)delegate
{
    self.delegate = delegate;
}

初始化 CustomClass 时,[[CustomClass alloc] initWithDelegate:self];

或者使委托(delegate)成为可设置的@property,并通过[mCustomClass setDelegate:self]更新;

然后您可以从自定义类中调用 onUpdateProgress 方法。

if (delegate != nil)     
 [delegate onUpdateProgress:int];

关于ios - 从另一个类实例更新一个类中定义的 UIProgressView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11953494/

相关文章:

iphone - 检测应用程序中的通知

iphone - 如何动态创建类的实例?

objective-c - 使用 Interface Builder 处理多个 Windows

iphone - UITextView 没有成为 iOS 7 中的第一响应者

objective-c - 如何将绘图 uiview 作为模型 View 仅弹出屏幕的一半

ios - 使用 UITableViewAutomaticDimension 时如何手动设置某些单元格的高度?

ios - 向 tableview 添加渐变会隐藏内容

ios - 如何判断 WKWebView 是否正在播放音频?

ios - 在呈现另一个 View Controller 时,如何阻止 "from" View 变黑?

iOS从特定位置加载 View