使用另一个类的方法中的数据更新视图

时间:2012-08-15 07:09:00

标签: objective-c ios xcode

我正在尝试使用我的实用工具类的方法更新我的UIProgressView。 现在,只是因为更新我的UIProgressView,我在视图控制器类中持有该方法,一切正常。因为我可以使用全局变量到达该方法的循环,所以我可以更新我的进度。但是,如果我想将此方法移动到我的实用程序类中,我应该做些什么来通知我的UIProgressView。感谢。

1 个答案:

答案 0 :(得分:1)

我建议将您的实用程序类重新设计为singleton

以下是您的实用程序类的代码示例:

UtilityClass.h文件:

@interface UtilityClass : NSObject

+ (UtilityClass *)sharedInstance;

- (CGFloat)awesomeMehod;

@end

UtilityClass.m

@implementation UtilityClass

+ (id)sharedInstance
{
    static UtilityClass *_instance;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _instance = [[UtilityClass alloc] init];
    });
    return _instance;
}

- (id)init
{
    self = [super init];
    if (!self) return nil;

    // Regular initialization, however keep in mind that it will be executed just once

    return self;
}

- (CGFloat)awesomeMethod
{
    return 42.0f
}

@end

现在,您可以从视图控制器中调用

CGFloat progress = [[UtilityClass sharedInstance] awesomeMethod];
[self.progressView setProgress:progress];

请记住以下几点:

  • 这是一种可能的方法,我会去阅读各种各样的方法 design patterns可能会在某一天派上用场

  • view controllers and the way they interact

  • 上刷新知识可能是一个好主意
  • 要使课程成为合适的单身人士,您也应该覆盖 allocinitinitWithZonedeallocrelease等方法 等等(如果你使用ARC,覆盖的方法列表会有所不同)here is an example这样做,尽管dispatch_once照顾 @synchronize()致电。就目前而言,只要您“实例化”您的课程 通过调用sharedInstance类方法,你会没事的。