在单个视图控制器中重新加载相同的视图

Posted

技术标签:

【中文标题】在单个视图控制器中重新加载相同的视图【英文标题】:Reloading the same view in a single view controller 【发布时间】:2011-10-24 00:57:40 【问题描述】:

我在UIViewController 中创建了一个UIView(我们称其为“Person”),它接受NSArray 的人并简单地显示有关他们的信息。

这个控制器被实例化并作为一个子视图从各种地方(搜索、构建布局......等等)加载,所以它必须是自包含的,没有任何代码来自父视图/超级视图。

现在,在向左或向右滑动时,我正在增加/减少我的数组并更新各种标签。

这很好用,但不是很讨人喜欢。我想知道是否可以创建我的视图的另一个实例,重新加载我的标签,然后用一些动画切换到它?

如果我以错误的方式处理这个问题,我深表歉意,我正在尝试自学 Objective-C。

谢谢,

【问题讨论】:

你标记为 ios 和 nsview。 UIView 适用于 iOS,nsview 适用于 cocoa osx 应用程序。除此之外,你的问题不是很清楚...... 我打错了,抱歉。不完全确定它是如何不清楚的。 【参考方案1】:

是的,您所描述的可以做到。这是否是实现您想要的最佳方式可能取决于您正在寻找的效果类型。

例如,您也可以选择在视图本身内对数据更改进行动画处理。例如,如果您动画淡出所有标签,更改它们的值,然后淡入标签,则此效果应该类似于在相同的更大视图的两个实例之间转换的效果,并且具有以下优点:内存效率更高,因为您不必创建整个重复视图。

编码也可能会简单得多,因为它可以将所有内容保存在单个 UIView 文件中。您提出的解决方案可能需要在视图控制器级别进行一些编码。

我会先看看 UIView 动画属性,因为它们相对简单。一些更复杂的事情可以通过 CAAnimation 的子类来完成。

【讨论】:

太好了,我会调查的。谢谢!

以上是关于在单个视图控制器中重新加载相同的视图的主要内容,如果未能解决你的问题,请参考以下文章

每次将视图控制器压入堆栈时,如何从 appDelegate 重新加载视图控制器?

为同一视图控制器中的两个表实现单个“numberOfRowsInSection”方法

在 iOS7 中将多个图像加载到单个视图控制器中的方向/分辨率问题

动画视图控制器并同时在表格视图中重新加载数据

重新加载根视图控制器

在 Xcode 中使用 CoreData 从模态视图控制器重新加载视图