切换XIB视图-Cocoa Mac

切换XIB视图-Cocoa Mac,cocoa,macos,sdk,xib,Cocoa,Macos,Sdk,Xib,我对编码非常陌生,想知道如何通过点击按钮切换XIB视图。切换时是否也可以添加动画 谢谢 Kevin一个简单的方法是使用Tables NSTabView,您可以在IB中布局所有内容,这样痛苦就最小。一个简单的方法是使用Tables NSTabView,您可以在IB中布局所有内容,这样痛苦就最小。这是完全可能的,但您需要做一些事情。我想您已经熟悉将插座连接到XIB中的对象,因此您需要做的第一件事是在XIB中创建自定义视图,并将它们连接到appDelegate中的插座。我建议将其中一个视图拖到窗口中,

我对编码非常陌生,想知道如何通过点击按钮切换XIB视图。切换时是否也可以添加动画

谢谢


Kevin

一个简单的方法是使用Tables NSTabView,您可以在IB中布局所有内容,这样痛苦就最小。

一个简单的方法是使用Tables NSTabView,您可以在IB中布局所有内容,这样痛苦就最小。

这是完全可能的,但您需要做一些事情。我想您已经熟悉将插座连接到XIB中的对象,因此您需要做的第一件事是在XIB中创建自定义视图,并将它们连接到appDelegate中的插座。我建议将其中一个视图拖到窗口中,另一个视图拖到窗口外。这样,当窗口加载时,它已经有一个自定义视图作为子视图。这只是让它更容易开始

然后,您将在appDelegate中编写一个iAction,并将其连接到您的按钮。假设其中一个自定义视图已由窗口托管,iAction应向窗口的contentView动画师发送一条replaceSubviewWith消息,如下所示
[[window.contentView animator]replaceSubview:firstView with:secondView]其中firstView和secondView是您在XIB中声明并连接到视图的指针/出口

这将向窗口内容视图的animator代理发送一条消息,告诉它用新的子视图替换旧的子视图。将消息发送到视图的animator代理(而不是视图本身)的原因是转换将使用Deafolt CatTransitionAnimation执行。因为你想让它变成动画,对吗

不应该删除一个子视图然后再添加另一个子视图的原因是,为删除子视图设置动画实际上相当棘手,需要实现委托方法animationDidEnd。这是因为对已从视图继承者权限中删除的视图执行动画没有意义。我不知道苹果为什么没有改变这一点,但就目前而言,这将是CoreAnimation持久的怪癖之一


如果有帮助,请告诉我。我很高兴澄清!欢迎来到可可

这是完全可能的,但是您需要做一些事情。我想您已经熟悉将插座连接到XIB中的对象,因此您需要做的第一件事是在XIB中创建自定义视图,并将它们连接到appDelegate中的插座。我建议将其中一个视图拖到窗口中,另一个视图拖到窗口外。这样,当窗口加载时,它已经有一个自定义视图作为子视图。这只是让它更容易开始

然后,您将在appDelegate中编写一个iAction,并将其连接到您的按钮。假设其中一个自定义视图已由窗口托管,iAction应向窗口的contentView动画师发送一条replaceSubviewWith消息,如下所示
[[window.contentView animator]replaceSubview:firstView with:secondView]其中firstView和secondView是您在XIB中声明并连接到视图的指针/出口

这将向窗口内容视图的animator代理发送一条消息,告诉它用新的子视图替换旧的子视图。将消息发送到视图的animator代理(而不是视图本身)的原因是转换将使用Deafolt CatTransitionAnimation执行。因为你想让它变成动画,对吗

不应该删除一个子视图然后再添加另一个子视图的原因是,为删除子视图设置动画实际上相当棘手,需要实现委托方法animationDidEnd。这是因为对已从视图继承者权限中删除的视图执行动画没有意义。我不知道苹果为什么没有改变这一点,但就目前而言,这将是CoreAnimation持久的怪癖之一


如果有帮助,请告诉我。我很高兴澄清!欢迎来到可可

我不使用iphoneapi系统。我正在创建mac应用程序。我不使用iphone api系统。我正在创建一个mac应用程序。只有一个问题,这些“视图”是否可以具体地将firstView和secondView放在不同的XIB上?是的,但它们不需要。是否有任何理由需要将它们放在单独的XIB中?只有一个问题,这些“视图”是否可以具体地将firstView和secondView放在不同的XIB中?是的,但不需要。是否有任何理由需要在单独的XIB中使用它们?