XCode/Cocoa Mac 改变视图

Posted

技术标签:

【中文标题】XCode/Cocoa Mac 改变视图【英文标题】:XCode/Cocoa Mac Changing Views 【发布时间】:2012-04-16 12:44:28 【问题描述】:

我无法弄清楚如何在我的 XCode 项目中的不同自定义视图之间进行更改。

我有我的主 nib 文件,由 1 个主窗口和 5 个自定义视图组成。主窗口由 5 个按钮组成,所有这些按钮都需要连接到不同的视图。例如,我点击按钮 1,它会关闭当前菜单并加载自定义视图 1。

我不知道该怎么做。

我想我会为 5 个不同的按钮和 5 个自定义视图创建 IBOutlets,并将它们连接到不同的方法,例如 openView1、openView2,其中每个方法都会关闭当前菜单并加载自定义视图?

谁能帮助我在代码方面如何实现这一目标?

非常感谢任何帮助。

谢谢

【问题讨论】:

【参考方案1】:

所以本质上你想要一个标签视图?

您可以在 Interface Builder 中创建 NSTabView。将选项卡的数量设置为 5。然后在其中布置您想要的视图的内容。

如果您对使用标准系统为标签提供的视觉外观感到满意,那么您就完成了。但是,如果您想拥有切换选项卡的自定义按钮,请继续阅读。

选中标签视图后,将其样式设置为 Tabless:

这会使标签按钮消失。这意味着视图之间的切换需要通过代码来完成。首先,您需要一个代表您的选项卡视图本身的 IBOutlet:将其连接起来。然后为openView1: 编写一个IBAction 方法,可能看起来像这样:

- (IBAction)openView1:(id)sender

    [tabView selectTabViewItemAtIndex:0];

为自己制作一个按钮(位于窗口中选项卡视图之外的某个位置,否则您只能从一个选项卡访问它!)并将其连接到此操作。

这可能是使用这样的界面的最简单方法。根据您希望如何构建代码,有很多方法可以改进它。例如,听起来您来自 ios 开发,您将为每个选项卡创建一个UIViewController。好吧,在 Mac 上存在 NSViewController,因此您可以使用类似的模式:但是如果您这样做,您需要编写一些代码来处理将视图控制器的视图放入选项卡视图的过程。它不会像在 iOS 上那样通过 Interface Builder 自动发生。如果您选择走那条路,This tutorial 应该可以帮助您入门。

【讨论】:

我没有考虑过使用标签视图,这是一种解决问题的方法,对吧?无论哪种方式,它都很好,很简单,可以完成工作,非常感谢! 这并不是真正的解决方法,它只是处理就地交换一组视图的最简单方法。选项卡视图可以很好地用于此目的。

以上是关于XCode/Cocoa Mac 改变视图的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI中状态改变未导致视图正确刷新的原因及解决

SwiftUI中状态改变未导致视图正确刷新的原因及解决

给予uiview animation有哪几种动画曲线

Xcode(Cocoa)如何将字节写入 NSData

Mac OS X 视图交换

Navicat中Win和Mac视图类快捷键有啥不同