如何实现setNeedsReload / setNeedsRefresh

时间:2012-06-11 15:59:56

标签: ios uiview refresh

我一直想知道用我自己的setNeedsRefresh方法扩展UIView - 一种行为类似于setNeedsLayoutsetNeedsDisplay的方法,但目的是刷新/重新加载数据,隐藏视图等。我的目标是:

  1. 能够将方法(尤其是设置者)与必须立即刷新视图分开。
  2. 能够标记视图以进行刷新而不是手动刷新(为了优化代码执行并具有更清晰的代码体系结构)。
  3. 我希望能够以这样的方式扩展UIView,你可以在任何视图上调用setNeedsRefresh,并在重绘之前让它执行refreshView或类似的方法。

    PS:通过setNeedsLayout +刷新标志处理此问题的最佳方法是什么?

    更新#1:以下是我希望能够做到的一个示例:

    -(void)setAvailableForPurchase:(BOOL)availableForPurchase
    {
        if (_availableForPurchase != availableForPurchase)
        {
            _availableForPurchase = availableForPurchase;
            [self setNeedsRefresh];
        }
    }
    

    然后:

    -(void)refreshView
    {
        if (self.isAvailableForPurchase)
        {
            self.someView.image = someImage;
            self.someButton.enabled = yes;
            // more code, changes several objects
        }
        else
        {
            // some other code...
        }
    }
    

    这个例子是一个非常简单的例子,目的是为了更好地表达我的要求 - 我在初始问题中列出了我需要/想要这样做的原因。

0 个答案:

没有答案