问题标签 [nsviewcontroller]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - NSMutableArrays 为空
我有一个 NSViewController 子类:
在我的-init
方法中,两个数组都是用创建的+new
,并且每个都被赋予一个对象。之后,我打电话给NSLog(@"%@, %@", entities, tiles);
,它给了我预期的结果:
不过,我可以单击视图上的一个按钮,该按钮调用相同的日志函数,它会输出以下内容:
几天来,我一直以某种形式被困在这个问题上。为什么世界上的数组是空的?
我很高兴发布更多代码,请告诉我!
界面:
我的-init
方法:
cocoa - 当视图由 NSViewController 提供时,如何将自动布局与基于视图的 NSTableView 一起使用?
我制作了以下示例应用程序来说明我的问题。
左视图是占位符视图(在 Interface Builder 中添加)。当应用程序加载时,我添加了一个由 NSViewController 管理的子视图。NSViewController 绘制不同颜色的矩形,每个矩形都是一个 NSView,这些颜色视图的布局由约束管理,以编程方式创建并添加到
-loadView
控制器的方法中。右视图是一个 NSTableView(在 Interface Builder 中添加)。当应用程序加载时,我使用相同的 NSViewController 类为表视图提供视图(仅添加一行)。
当我将子视图添加到占位符视图时,我还添加了两个额外的约束,
这些约束将子视图的框架设置为等于父视图的边界。一切都很好。
但是,当我使用委托方法为 NSTableView 提供视图时-tableView:viewForTableColumn:row:
,该视图尚未添加到表中。因此它没有超级视图,因此不能(还)将约束添加到视图中。这就是为什么表格视图中的视图与表格视图单元格的边界不同的原因。
所以我的问题是如何向我提供给表视图的视图添加约束?表视图添加后可以再次访问视图吗?这似乎有点hack-ish。
AppDelegate.h 的源代码,
和 AppDelegate.m,
更新@jrturton
-(void) tableView:(NSTableView *)tableView didAddRowView:(NSTableRowView *)rowView forRow:(NSInteger)row
在工作中添加约束。
@swalkner
我添加的约束非常基本,
objective-c - NSViewController 中的 NSScrollView
我正在制作我的第一个 OSX 应用程序。我的 appDelegate 有一个包含 NSViewController 的 contentView 的窗口。这个 NSViewController 有一个在启动时显示的自定义视图。我添加了一个 NSScrollView 作为我的 NSViewController 的属性,并在 xib 中将它放在正确的位置并将其引用给文件所有者(NSViewController)。显示视图时,滚动视图永远不会显示。包含scrollView的代码如下:
在 viewController 的 .h 中:
在 viewController 的 .m 中:
如果有人可以提供帮助,那就太棒了!谢谢!
objective-c - [XXXX performSelector:withObject:]: 消息发送到释放的实例
从 NSView 启动 IBAction 时,我收到此错误消息。
XXXX 是 AccountTableCellViewController 我确实给它加上了一个抽象名称,以防它可以帮助其他人。
这是组件的结构:
我有一个加载此视图的应用程序:
使用这个 NSView 作为单元格
TableView 的绑定方式如下:
我显示的内容如下(我对没有在任何地方链接控制器有一些疑问)
任何想法?
cocoa - 如何一次又一次地调用 awakeFromnib,我正在使用 setNeedsDisplay,它不起作用
加载视图时第一次调用 awakeFromNib,但我想通过方法再次调用 awakeFromNib。
我试过 [查看 setNeedsDisplay:YES];但它没有再次调用 awakeFromNib
任何人都可以建议为什么不调用 awakeFromnib 提前谢谢...
cocoa - 如何定位 NSPopover
我有一个 OSX 应用程序,它使用 NSViewController 在我的 NSView 中交换进出视图。其中一个视图是 NSOutlineView。我现在希望在用户双击大纲视图中的一行时出现 NSPopover。目前我使用以下方法让弹出框出现:
这使得 NSPopover 出现在应用程序的底部。这可行,但我希望能够让弹出框恰好出现在 NSOutlineView 的单击行下方。我换入换出的每个视图都由 NSViewController 控制,我认为我可以使用 NSViewController 的 view 属性来识别我的视图位置。但是,如果我替换[[NSApp keyWindow] contentView]
为myViewController.view
我收到视图没有窗口并且 NSPopover 崩溃的错误。显然,我遇到了麻烦 1)在 NSView 中找到单击行相对于主窗口的坐标 2)理解为什么我的视图没有窗口。如果有人有可以帮助我理解这些问题的建议,我将不胜感激。
更新 06/02/2013 我仍在为我的问题而苦苦挣扎,但我发现如果我通过我的 MainWindowController (myControlledView) 访问它的属性,我可以获得正确的视图坐标。然后,当我询问视图的原点和帧大小时,我得到了正确的值。我的 VC 将自定义视图加载为 NIB 文件,当我询问加载视图的来源时,我得到 (0,0)。我认为即使我将视图加载为 NIB,视图相对于窗口的位置也会保持不变?我可以将视图原点传递给我的 VC,从而正确设置 NSPopover,但这看起来相当麻烦,我认为 NIB 加载的视图原点可以通过 VC 正确访问。
这导致:My origin: 0.000000 0.000000
并且不是我想要的,而这:
结果是正确的来源:My origin: 176.000000 38.000000
显然,我不了解有关视图和窗口的内容。任何帮助都将不胜感激。
感谢您的建议和帮助!干杯,特隆德
cocoa - View 还是 Controller 应该负责拖动处理?
通常,正确处理拖动的主要责任在哪里——在 NSView 或 NSViewController 中。
拖动操作的钩子都包含在 NSView 中,所以看起来 NSView 是自然的地方。此外,视图需要发挥一些作用,因为视图知道东西在哪里,所以它自然是拖动结束的专家。
但拖动通常与文档间或进程间通信有关——尤其是关于将文件从 Finder 拖动到文档中。拖动必然会导致模型的更改或添加。这就是控制器的工作。
最后,无论我们是在视图还是控制器上,我们通常会添加一堆方法来处理拖入过程,然后接收数据。人们是简单地将方法添加到视图或控制器,还是将它们转发到策略对象?
cocoa - Mac OS X Cocoa 多视图应用程序导航
我已经花了整整 2 天的时间试图弄清楚如何使用 NSViewControllers 来创建多视图应用程序。
这就是我所做的。
我有 2 个视图控制器和 MainMenu.xib 的窗口。我还有一个 AppController,它是两个视图控制器的代表。
当我启动应用程序时,我首先看到 MainMenu.xib 的窗口视图,其中包含一个按钮。单击此按钮时,将向 appController 发送 IBAction 并要求 SecondViewController 显示它的 nib。到目前为止,一切都很好,并且 nib 文件显示正确。
在 secondViewController 上,有另一个按钮将另一个 IBAction 发送到 appController 并要求显示 FirstViewController 但没有任何反应,没有崩溃,没有警告......任何帮助将不胜感激......提前感谢您的耐心等待。 ..
这是 AppController.h 的代码:
这是 AppController.m 的代码:
好吧,任何人都可以帮助我,我只需要一个视图应用程序,它显示第一个 ViewController 和第一个 viewController 上的按钮,将我带到第二个视图控制器,第二个按钮带我回到我的第一个视图控制器......我'已经花了一个多星期了......徒劳无功...... PS:我不想要mainMenu.xib窗口或选项卡上的任何按钮。
xcode - 从其他窗口显示 MainMenu.xib
我已将我的 xcode 项目中的第一个 viewController 设置为不同的视图控制器。但是我想从我的第一个视图控制器中打开 MainMenu.xib。
我不太确定如何实现这一目标。
谢谢你的帮助!
最好的,朱利安
objective-c - 以编程方式关闭窗口
对于Mac 上的 Cocoa 应用程序,我需要在使用单击相关按钮时显示一些窗口。我可以使用这个显示窗口:
在新窗口中,我有一个Push Button
“取消”和另一个“保存”。我想在按下“保存”按钮时在数据库中执行一些查询,并在按下“取消”按钮时关闭窗口。
我可以在从xib
文件中拖动窗口时关闭窗口(右键单击窗口时的“出口菜单”)
但我不能将它用于“保存”按钮。
我试过[self performSelector:@selector(performClose:)];
但我收到一条错误消息:
[AddProductViewController performClose:]:无法识别的选择器发送到实例 0x107f64900
相同的[[[self view] window] close];
我缺乏解决方法的想法,这是我的第一个 Mac 应用程序。