我对编码很陌生,想知道如何在按钮点击时切换XIB视图。无论如何还要在切换时添加动画吗?
谢谢,
凯文
答案 0 :(得分:5)
这是完全可能的,但您需要做一些事情。我想你已经熟悉将插座连接到XIB中的对象,所以你需要做的第一件事就是在你的XIB中创建自定义视图并将它们连接到appDelegate中的插座。我建议将其中一个视图拖入窗口,一个视图在窗口外。这样,当窗口加载时,它已经将您的一个自定义视图作为子视图。这只是让它更容易上手。
然后你将在appDelegate中编写一个IBAction并将其连接到你的按钮。假设其中一个自定义视图已经由窗口托管,IBAction应该向窗口的contentView动画师发送一个replaceSubviewWith消息,例如[[window.contentView animator] replaceSubview:firstView with:secondView];
,其中firstView和secondView是你声明并连接到的那个指针/出口。您的XIB中的视图。
这是向窗口内容视图的动画师代理发送一条消息,告诉它用新的子视图替换旧的子视图。将消息发送到视图的动画代理(而不是视图本身)的原因是转换将使用deafult CATransitionAnimation执行。因为你希望它是动画的,对吧?
你不应该删除一个子视图然后添加另一个子视图的原因是因为动画删除子视图实际上非常棘手并且需要实现委托方法animationDidEnd。这是因为在已从视图层次结构中删除的视图上执行动画是没有意义的。我不知道为什么苹果公司没有改变这一点,但现在它将成为CoreAnimation持久的怪癖之一。
如果有帮助,请告诉我。我很乐意澄清!欢迎来到Cocoa!
答案 1 :(得分:3)
一个简单的方法是使用一个表格NSTabView-你可以把所有东西都放在IB中,这样可以减轻痛苦。