gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 13:30:50 27 4
gpt4 key购买 nike

如果我的术语不正确,我深表歉意 - 我学习 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com