【问题标题】:Is there a method in iOS that can reload the current View?iOS中是否有可以重新加载当前视图的方法?
【发布时间】:2013-06-20 22:18:39
【问题描述】:

我的问题是:

我想展示一些 cmets。当视图第一次显示时,每个子视图都会根据 cmets 的计数或其他条件调整那里的位置或隐藏状态。

另外,用户可以在同一个视图发表评论,所以在评论提交后,每个子视图都应该根据新的 cmets 的总数调整那里的位置或状态。

我可以配置所有在连接后需要改变位置的子视图。但这需要做很多工作,而且很容易出错。

但是,如果我可以让视图自己重新加载它(或多或少像再次调用viewWillAppearviewDidLoad,但重置每个视图),并且只需运行viewDidLoad 中的方法,那将容易得多刷新 cmets。

所以我不知道是否有一种方法可以将所有子视图重置为原点位置。 我试过[self setNeedsLayout][self setNeedsDisplay] 的方法,但是不行;

IOS中有没有可以重新加载当前View的方法?

【问题讨论】:

  • setNeedsLayout 用于覆盖自定义绘图的 drawrect 方法。 setNeedsLayout 应该可以工作.. 你能发布你的代码吗?

标签: ios view refresh reload


【解决方案1】:

现在有一种方法可以自动“重新加载”您的视图来更新您的子视图中的数据。您可以通过手动(通过 IBOutlets)为它们分配新值来更新所有子视图,通过它们的标签来区分子视图,但这并不是一个很好的做法。

使用 cmets 创建视图的更好方法是使用基于 UITableView 的自定义视图,其中单个单元格代表 cmets。

例如,检查它是如何在这个类中完成的 - http://alexbarinov.github.io/UIBubbleTableView/

【讨论】:

  • 这是一个正确的答案,但通过标签区分子视图是一个糟糕的设计。写起来更简单,但更难维护。标签不应该被添加到视图中。
  • @Sulthan 成像您有一个表格视图单元格,上面有 5 个子视图。例如,您需要更新 100 个单元格,每个单元格有 5 个子视图。不使用这 5 个子视图的标签怎么办?
  • 自定义单元将子视图视为属性。要访问单元格,您只需获得visibleCells。更好的是,单元格可以有一个方法来接收新数据并在内部更新其内容。
  • 我猜我们在谈论不同的事情。因为据我现在的理解,为单元格的子视图使用属性是不好的设计。
  • 我们可能不太了解自己。为了简化 - 使用标签几乎每次都是糟糕的设计。我只记得一个有意义的用例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-09
  • 1970-01-01
  • 2010-12-20
  • 1970-01-01
相关资源
最近更新 更多