标签: nsviewcontroller

获取NSViewController的View是否是自定义类?

我使用以下代码从我的控制器中获取我的视图:

CollectionItemView *myView = [self view]; 
Run Code Online (Sandbox Code Playgroud)

这很好用,但我收到了警告Incompatible pointer types initializing CollectionItemView __strong with an expression of type NSView.我理解为什么我得到这个但是可以忽略它或者我应该覆盖视图属性吗?

夹头

xcode cocoa objective-c nsview nsviewcontroller

5
推荐指数
1
解决办法
272
查看次数

Xcode 6 - Swift - 单窗口故事板可可应用程序的多个视图

就在上周,我决定深入了解Swift和Xcode开发的世界,截至昨天,我正在积极开发新的应用程序.我在Java Swing方面有很多经验,但与使用Apple的花哨界面构建器和故事板相比,使用它有很大的不同.

我正在尝试开发一个单窗口应用程序,它有许多不同的视图,可以通过按钮导航.我试图围绕故事板的工作方式,但即使在我阅读完文档之后,我也不知道我在做什么 - 我已经习惯了在硬编码中工作.它来到我写我的应用程序的整个网络层只是为了避免使用该界面.

基本上我有一组不同的NSViewControllers,每个都引用了一些组件(按钮,标签等),我希望某些按钮能够将当前视图控制器(最好带有segue动画)更改为另一个.我怎么处理这个?我猜这不难实现,但我迷失了.任何帮助,将不胜感激!

如果我需要提交任何代码,请告诉我 - 我确实已经编写了基本类但与此无关.

谢谢,-Aidan

xcode cocoa storyboard nsviewcontroller swift

5
推荐指数
0
解决办法
1380
查看次数

如何在OSX Mavericks上呈现ViewControllerAsSheet?

这是一个很长的故事,但要缩短它; 我的第一个OSX应用程序是在Swift中使用故事板编写的(在Yosemite上)直到我发现我的(已完成)应用程序不会在Mavericks上运行.我需要在Mavericks上运行,所以我用NIB替换了故事板.

我的问题是与segues; 我正在使用'sheet type'segues在主视图控制器上显示工作表中的其他视图控制器.调用NSViewController的presentViewControllerAsSheet方法是一个很好的替代,因为它看起来一样,但是这个API是在Yosemite中引入的 - 所以我需要弄清楚如何为Mavericks做这个.

在主视图上的按钮操作中,我尝试使用beginSheet,如下所示:

secondViewController = SecondViewController(nibName: "SecondViewController", bundle: nil)
self.view.window?.beginSheet(secondViewController!view.window!, completionHandler: nil)
Run Code Online (Sandbox Code Playgroud)

但是第二个视图控制器的窗口在运行时为空.我已经尝试将新视图控制器作为子视图添加到应用程序窗口,但这是一个无法识别的选择器:

NSApplication.sharedApplication().windows[0].addSubView(secondViewController!.view)
Run Code Online (Sandbox Code Playgroud)

我搜索高低,以获取如何显示工作表的说明,我能找到的是:视图控制器可以拥有一张工作表吗?但我很遗憾地承认我不明白答案.有人可以帮我一些工作代码吗?我开始担心我正在尝试做一些与众不同的事情,但在约塞米蒂看起来不错,所以人们在优胜美地被释放之前是怎么做到的?

编辑 我仍然没有解决方案,所以我已经整理了一个小应用程序,显示我遇到的问题.

在AppDelegate.swift中:

class AppDelegate: NSObject, NSApplicationDelegate {
    @IBOutlet weak var window: NSWindow!
    var mainViewController: FirstView!   
    func applicationDidFinishLaunching(aNotification: NSNotification) {
        mainViewController = FirstView(nibName:"FirstView", bundle: nil)
        window.contentView = mainViewController.view
        mainViewController.view.frame = (window.contentView as! NSView).bounds
    }
}
Run Code Online (Sandbox Code Playgroud)

在FirstView.swift中(关联的NIB有一个'打开表'按钮)

class FirstView: NSViewController {
    var secondView: SecondView?
    var secondWindow: SecondWinCon?    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    @IBAction func pressButton(sender: AnyObject) {
        secondView …
Run Code Online (Sandbox Code Playgroud)

macos cocoa nsviewcontroller osx-mavericks swift

5
推荐指数
2
解决办法
2087
查看次数

如何让自定义视图控制器将其视图加载到另一个笔尖的占位符中?

因此,NSViewController使用xib/nib 创建自定义子类.然后在app的主nib中,NSViewController从对象库中添加一个对象,将该类设置为自定义视图控制器类.IBOutlet在自定义视图控制器的应用程序委托中创建.

NSView对象添加到窗口.将视图控制器的视图设置为窗口中的视图NSView.

当我构建和运行时,视图是主笔尖中的通用视图,而不是视图控制器的笔尖中的视图...

还有什么需要让这个过程按照我的想法运作?我认为这应该从自定义视图控制器的笔尖填充视图(和任何子视图).

我知道如何在代码中执行此操作,但它确实看起来像锅炉板.(特别是添加了自动布局约束.)

请告诉我,我错过了一些愚蠢明显的东西.

cocoa xib nsview nib nsviewcontroller

4
推荐指数
1
解决办法
2153
查看次数

如何在Swift的AppDelegate中使用自己的ViewController打开一个新窗口

我已经使用下拉列表创建了一个statusBar应用程序.我想从该下拉列表打开一个settingsWindow.我已经使用自己的ViewController创建了设置窗口.

问题是我无法弄清楚如何实例化并显示我所做的settingsWindow.我试图跟踪互联网上的每个线程,但没有任何成功.

我的Viewcontroller:

class SettingsViewController: NSViewController {
   @IBOutlet var ipAddress: NSTextField!
   @IBOutlet var port: NSTextField!

   @IBAction func connect(sender: AnyObject) {}
   override func viewDidLoad() {
      super.viewDidLoad()
   }
}
Run Code Online (Sandbox Code Playgroud)

我的AppDelegate:

class AppDelegate: NSObject, NSApplicationDelegate {
   @IBOutlet var statusMenu: NSMenu!
   var statusItem: NSStatusItem?
   var tcpService: TcpService = TcpService()

   func applicationDidFinishLaunching(aNotification: NSNotification?) {

      let bar = NSStatusBar.systemStatusBar()

      statusItem = bar.statusItemWithLength(20)
      statusItem!.menu = statusMenu
      statusItem!.image = NSImage(byReferencingFile: NSBundle.mainBundle().pathForResource("16*16", ofType: "png"))
      statusItem!.highlightMode = true

      tcpService.initOutputStream("192.168.1.1", Port: 8888)
   }

   func applicationWillTerminate(aNotification: NSNotification?) {
      // Insert code here …
Run Code Online (Sandbox Code Playgroud)

macos cocoa nswindow nsviewcontroller swift

4
推荐指数
2
解决办法
3751
查看次数

NSContainerView在Xcode 6中具有多个子视图控制器

我正在尝试将Xcode 6故事板上的两个不同的视图控制器与链接起来,NSContainerView以便可以有条件地切换它们。不幸的是,这里的本教程没有任何帮助,因为自Xcode以来,情况似乎已发生变化。

因此,我有两个不同的视图控制器,默认情况下其中一个已加载到容器视图中,但是我希望能够以编程方式将第二个视图控制器加载到容器视图中。Xcode 6仅允许在我从一个拖动到另一个时创建嵌入Segues,所以并没有太大帮助。

有人可以告诉我Xcode 6是如何实现的吗?

macos cocoa nsviewcontroller xcode6

4
推荐指数
1
解决办法
2584
查看次数

NSPopOver和NSViewController - 拖动以调整大小

我正在制作我正在使用的MenuBar应用程序NSPopOver.问题是NSPopover uses NSViewController as a contentViewController,其大小得到修复.我的要求是使NSViewController的大小灵活,就像NSWindowController(设置最小大小和最大值取决于总屏幕大小).简单来说,当用户拖动它时,如何更改NSViewController(NSPopOver)的大小.我是OS X编程的新手.

macos cocoa nswindow nsviewcontroller nspopover

4
推荐指数
2
解决办法
1185
查看次数

Cocoa 应用程序未在 High Sierra 上加载视图或运行代码

我在 Mac AppStore 上有一个应用程序,许多用户最近写信说它无法在 High Sierra 上运行(可能是 10.13.6,很难从中提取具体信息)。我设法在朋友的设备上重现了该问题,但是我无法使用该设备通过 Xcode 等进行构建。

问题似乎是NSViewController根本不加载它的子视图!下面显示的灰色视图控制器中应该有下拉菜单和按钮漏洞

我还注意到,关闭灰色窗口不会关闭红色透明窗口 - 在 Mojave 上,执行此操作的代码按预期运行。状态栏中的自定义快捷方式/菜单项似乎也没有运行其绑定的代码。请注意,红色窗口是通过灰色窗口中的代码显示的,因此某些代码正在设法运行。

这个模糊的线索似乎提到了同样的问题,就像这个问题一样。然而,他们都没有要求程序化的解决方案。

有谁知道如何解决这个问题,或者我是否需要告诉我的用户更新他们的操作系统?

编辑:设法在 High Sierra 上编译,但视图仍然没有出现(视图调试器中也没有任何迹象)。控制台说:

2019-02-02 16:53:41.602178+1100 Translate This[20410:36446120] -[NSMenu setItemArray:]: unrecognized selector sent to instance 0x604000069180
2019-02-02 16:53:41.602366+1100 Translate This[20410:36446120] Failed to set (contentViewController) user defined inspected property on (NSWindow): -[NSMenu setItemArray:]: unrecognized selector sent to instance 0x604000069180
2019-02-02 16:54:57.678247+1100 Translate This[20410:36446120] -[NSStoryboard _bundle]: unrecognized selector sent to instance 0x600000000660
2019-02-02 16:54:57.728849+1100 …
Run Code Online (Sandbox Code Playgroud)

xcode cocoa nswindow nsviewcontroller macos-high-sierra

4
推荐指数
1
解决办法
486
查看次数

如何配置NSWindowController,NSViewController和NSViews

说实话,我甚至不知道从哪里开始.我觉得我已经在圈子里走了好几个小时尝试不同的事情.

我的问题是如何在IB中配置NSWindowControllers,NSViewControllers和NSViews,然后访问层次结构中的每个,以使用单个NSWindowController切换出NSViewControllers ...

我从Apple网站开始使用此代码,并尝试根据我的情况对其进行更改:https: //developer.apple.com/library/mac/samplecode/ViewController/Listings/MyWindowController_m.html#//apple_ref/doc/ UID/DTS10004233-MyWindowController_m-DontLinkElementID_12

我有一个小应用程序,有2个视图需要根据用户交互来回切换.我们称之为drop_view和table_view.Drop_view是在启动时加载的视图.我的两个视图都在单独的nib文件中配置:

RADropViewController.xib

  RADropViewController.m
  RADropViewController.h
  RADropView.m
  RADropView.h
Run Code Online (Sandbox Code Playgroud)

RADropViewController.xib

  RADropViewController.m
  RADropViewController.h
  RADropView.m
  RADropView.h
Run Code Online (Sandbox Code Playgroud)

每个笔尖都有一个文件所有者,第一响应者,应用程序,视图图标和对象.File的Owner设置为控制器类,View Icon设置为View类,Object图标设置为View Controller类.

然后我有一个带窗口控制器的窗口控制器笔尖.

RAWindowController.xib

RAWindowController.h
RAWindowController.m
Run Code Online (Sandbox Code Playgroud)

nib将文件所有者设置为RAWindowController,将Window设置为NSWindow,将对象设置为RAWindowContoller.我在这个笔尖的窗口中也有一个自定义视图,因为在Apple示例中有一个NSView插座,我在所有研究中读取了stackoverflow,"通常有一个带有主机视图的窗口控制器,用于托管不同的NSWindowControllers).

网点是:

文件的所有者

Outlets
    myTargetView -> Custom View
Referencing Outlets
   delegate -> Window - Window
Run Code Online (Sandbox Code Playgroud)

窗口 - 窗口

Outlets
    delegate -> File's Owner
Referencing Outlets
    window -> Window Controller
Run Code Online (Sandbox Code Playgroud)

窗口控制器

Outlets
    myTargetView -> Custom View
    window -> Window - Window
Run Code Online (Sandbox Code Playgroud)

这是我的RAWindowcontroller.h

@class RADropViewController, RATableViewController, RAWindowView;

@interface RAWindowController : NSWindowController
{

    IBOutlet NSView *myTargetView;
} …
Run Code Online (Sandbox Code Playgroud)

nsview nsviewcontroller nswindowcontroller

3
推荐指数
1
解决办法
3154
查看次数

从NSViewController访问NSDocument,反之亦然

从关联的NSViewController子类访问NSDocument子类的正确方法是什么,反之亦然?

我有以下代码执行前者,但它在视图加载或移动到窗口时不起作用:

var document: Document {
    return NSDocumentController.sharedDocumentController().documentForWindow(view.window!) as! Document
}
Run Code Online (Sandbox Code Playgroud)

model-view-controller cocoa nsdocument nsviewcontroller

3
推荐指数
1
解决办法
1765
查看次数