- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我很难理解如何使用 Interface Builder 和 NSViewController 加载 View 。
我的目标是拥有一个满足以下描述的 View :顶部的顶栏(类似于工具栏,但不完全一样)跨越 View 的整个宽度,下面是第二个“内容 View ”。该复合 View 由我的 NSViewController
子类拥有。
为此使用 Interface Builder 是有意义的。我创建了一个 View Nib ,并向其中添加了两个 subview ,并正确放置了它们(带有顶部栏和内容 View )。我已将 File's Owner
设置为 MyViewController
,并连接了 socket 等。
我希望加载的 View (栏和内容)也在它们自己的 Nib 中(这可能是让我绊倒的原因),并且这些 Nib 将其自定义类设置为相应的 NSView 子类(如果适用)。我不确定将什么设置为他们的文件所有者
(我猜测MyController
,因为它应该是他们的所有者)。
唉,当我初始化 MyViewController
的实例时,我的 Nib 实际上都没有显示。我已经将它正确添加到我的 Window 的 contentView 中(我已经检查过其他情况),实际上,事情已经加载了。也就是说,awakeFromNib
被发送到栏 View ,但它不会显示在窗口中。我想我肯定在某个地方交叉了一些电线。也许有人可以伸出援手来缓解我的一些挫败感?
编辑一些代码来显示我在做什么
当我的应用程序完成启动时, Controller 将从应用程序委托(delegate)加载:
MyController *controller = [[MyController alloc] initWithNibName:@"MyController" bundle:nil];
[window setContentView:[controller view]];
然后在我的 initWithNibName 中,我现在除了调用 super 之外什么都不做。
最佳答案
将每个 View 分解为自己的 Nib 并使用 NSViewController 时,典型的处理方法是为每个 Nib 创建一个 NSViewController 子类。然后,每个相应 nib 文件的文件所有者将设置为该 NSViewController
子类,并且您将 view
导出连接到 nib 中的自定义 View 。然后,在控制主窗口内容 View 的 View Controller 中,实例化每个 NSViewController
子类的实例,然后将该 Controller 的 View 添加到您的窗口中。
一段简短的代码 - 在此代码中,我调用主要内容 View Controller MainViewController
,“工具栏”的 Controller 是 TopViewController
,并且其余内容是 ContentViewController
//MainViewController.h
@interface MainViewController : NSViewController
{
//These would just be custom views included in the main nib file that serve
//as placeholders for where to insert the views coming from other nibs
IBOutlet NSView* topView;
IBOutlet NSView* contentView;
TopViewController* topViewController;
ContentViewController* contentViewController;
}
@end
//MainViewController.m
@implementation MainViewController
//loadView is declared in NSViewController, but awakeFromNib would work also
//this is preferred to doing things in initWithNibName:bundle: because
//views are loaded lazily, so you don't need to go loading the other nibs
//until your own nib has actually been loaded.
- (void)loadView
{
[super loadView];
topViewController = [[TopViewController alloc] initWithNibName:@"TopView" bundle:nil];
[[topViewController view] setFrame:[topView frame]];
[[self view] replaceSubview:topView with:[topViewController view]];
contentViewController = [[ContentViewController alloc] initWithNibName:@"ContentView" bundle:nil];
[[contentViewController view] setFrame:[contentView frame]];
[[self view] replaceSubview:contentView with:[contentViewController view]];
}
@end
关于cocoa - NSViewController 和 Nib 中的多个 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1726250/
我正在尝试在手写笔中使用 Nib CSS3 扩展。安装了手写笔和 Nib (尝试了本地和全局 -g)。但没有一个工作,当我做 stylus styles.styl > build/styles.css
我们当前的best-practice for custom views是: 在 Nib 中构建自定义 View 。 在 View Controller 中,以编程方式加载 Nib,从加载的对象数组中获
我是界面构建器的新手,我想要一个包含 UIView 的 3x3 网格的屏幕,每个网格都包含一个 UIImageView 和 4 个 UILabels。 我的逻辑可能有缺陷,但我试图实现这一目标的方式是
我有一个用 Swift 编写的框架/模块,它提供了一些具有 IBDesignable 功能的自定义控件。 目前我正在开发一个基于 CollectionView 的控件。 CollectionView
我有两个 nib 文件 - Main.nib 和 Preference.nib在 Main.nib 文件中,我有一个 NSView 类的实例。它的窗口有一个NSPopUpButton,单击它会显示一个
我想创建一个节标题来加载一个 nib 文件并将其设置为标题 UIView。这个 nib 文件还将有一个关联的类,其中连接了 outlets 和 action,所以我想像平常一样用 nib 加载那个类。
我正在尝试使用来自 this pre-built page menu pod from github 在说明中,它说: var controller : UIViewController =
我是 Cocoa 新手,无法将我的 nib 文件拆分为多个 nib 文件。 我的MainMenu.nib包含一个Tracker Controller对象,它是NSObject的子类。它在我的主菜单中有
我通过 XIB 创建了 CustomViewController。 我还通过作为 UIView 子类的不同 XIB 文件创建了 CustomView。 然后我将 UIView 绑定(bind)到 Cu
我正在使用自定义 UITableViewCell。当我尝试运行我的代码时,我得到了这个异常堆栈,我无法理解问题的根源: terminating app due to uncaught exceptio
我有两个 Nib ParentViewController.xib ChildViewController.xib ParentViewController.xib 包含一个 UIView 和一个 U
我一开始使用了一些 NSWindows 项目,但我的 GUI 正在不断发展,这些元素将更适合作为 NSViews。有没有办法将 NSWindow NIB 转换为 NSView NIB? 最佳答案 不存
我想要具有正确顺序的 View Controller 生命周期功能的完整列表。请任何天才。 请指定ViewController生命周期函数. 请指定序列号,例如用法:,并且仅使用简短描述。示例: 与使
我有两个 Nib :Parent.xib 和 Child.xib。 我已将子 Nib 包含在父 Nib 内以简化绑定(bind)。我在 loadView 中以编程方式设置 subview 。问题是,a
我正在开发一款通用应用程序,iPhone 版本运行良好。我为 iPad 创建了一个新的 nib,并将文件所有者设置为 viewcontroller 类。我连接了所有的 IBOutlets 和 IBAc
我有两个 UIViews,我将它们称为 A 和 B。 A 是B 的容器,每一个都是使用Interface Builder 创建的。 我需要使用界面生成器将我的 B View 添加到 A 中,如下图所示
谁能解释什么时候对同一个 NIB 文件使用多个 View 比使用多个 NIB 文件更好? 一个 NIB 文件可以包含多个 View ,因此有时使用一种方法比使用另一种方法更好。 我是不是太含糊了? 最
简单的任务:我有一个带有 2 个 NIB 文件的应用程序(每个 NIB 文件都有自己的 Controller )。我已经成功地显示了第二个 NIB 文件的窗口,就像我想要的那样,但现在,我想单击 NI
目前,我有一个托管上下文、许多相互关联的实体 NSArrayController,以及几个 Windows,每个 Windows 都使用 1 或 2 个 NSArrayController。 Wind
尝试创建一个 tableView 单元格 xib,但遇到错误“加载了 nib 但未设置 View 导出” 我读过很多帖子,大多数人都说将“ View ”从文件所有者拖到 IB View 。 但是,如果
我是一名优秀的程序员,十分优秀!