在单个视图控制器中重新加载相同的视图
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”方法