标签: nsviewcontroller

NSVIewController之间的导航

我是MAC OSX应用程序开发的新手.在我的应用程序中,我有三个NSViewControllers,它们是PracticeController,NoteController和QuestionController.我必须从PracticeController和QuestionController导航到NoteViewController并返回到NoteController导航的viewController.

例如:当我们从PracticeController导航到NoteController时,当我们点击NoteController的后退按钮时,我必须来到PracticeController,当我们从QuestionController导航到NoteController时,当我们点击NoteController的后退按钮时,我必须来QuestionController.

请帮帮我怎么做?我正在寻找它.谢谢.

macos nsviewcontroller

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

自定义NSStoryboard不会将NSViewController添加到Responder Chain

总体目标:在macOS上使用自定义故事板segue

手头的问题是响应者链.根据Apple的说法:

此外,在macOS 10.10及更高版本中,视图控制器参与响应者链.NSViewController

如果我在macOS故事板中使用标准segue,则目标视图控制器的行为与预期一致 - 焦点,键等效,响应者链等.

但是,如果我使用自定义segue,目标视图控制器不会按预期运行:(具体而言,密钥等效项神秘地无法工作 - 但是,在测试中,来自视图控制器的按钮上的等效键继续工作(这不是' t help/desired)

在macOS 10.12上,我使用以下自定义segue ...我做错了什么?

class PushSegue: NSStoryboardSegue {

override func perform() {
    (sourceController as AnyObject).presentViewController(destinationController as! NSViewController, animator: PushAnimator())
}
}


class PushAnimator:  NSObject, NSViewControllerPresentationAnimator  {

func animatePresentation(of viewController: NSViewController, from fromViewController: NSViewController) {
    viewController.view.wantsLayer = true
    viewController.view.frame = CGRect(x: fromViewController.view.frame.size.width, y: 0,
                                       width: fromViewController.view.frame.size.width, height: fromViewController.view.frame.size.height)
    fromViewController.addChildViewController(viewController)
    fromViewController.view.addSubview(viewController.view)

    let futureFrame = CGRect(x: 0, y: 0, width: viewController.view.frame.size.width,
                             height: …
Run Code Online (Sandbox Code Playgroud)

xcode nsviewcontroller nsresponder swift macos-sierra

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

Interface构建器中的NSWindowController对象链接

我创建了一个NSWindow xib文件,我想在另一个窗口中点击按钮打开它.

现在,为了控制NSWindow的行为,我从xib中的Library拖动了一个对象,并将其更改为我在XCode中定义的NSWindowController(即ListingWindowController)的子类.

类似地,我还创建了一个NSViewController的子类(即ListingViewController)来管理NSWindow中的NSView.为此,我在xib中从库中拖动NSViewController,并将其类更改为ListingViewController.

@class ListingViewController;

@interface ListingWindowController : NSWindowController {
    IBOutlet ListingViewController *listingVC;
}

@property (nonatomic, retain) IBOutlet ListingViewController *listingVC;
@end
Run Code Online (Sandbox Code Playgroud)

我在IB中连接窗口和我的窗口控制器的列表VC.

现在,在我的启动(第一个)窗口中单击按钮调用此窗口,我使用initWithWindowNibName创建窗口控制器,就像这样.

- (IBAction) pushConnect:(id)sender {
    NSLog(@"Connect pushed.");
    if (wc == nil) {
        wc = [[ListingWindowController alloc] initWithWindowNibName:@"ListingWindow" owner:self];
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(closeWindow:) name:NSWindowWillCloseNotification object:nil];

        [wc showWindow:sender];
    }
}
Run Code Online (Sandbox Code Playgroud)

问题在于,尽管在IB中为即将到来的窗口/视图的视图控制器完成了所有绑定,但即使在加载新窗口(代码下方)之后,窗口和listingVC也会出现(null),(null).

- (void)windowDidLoad {
    [super windowDidLoad];

NSLog(@"windowDidLoad = %@, %@", self.window, self.listingVC);
}
Run Code Online (Sandbox Code Playgroud)

请帮助为什么连接不起作用.我正在敲打这个问题已经有一段时间了.

PS:我来自iOS编程背景.所以,我假设Mac的窗口/视图控制器的行为类似于iOS UIViewControllers.

TIA ..

cocoa binding interface-builder nsviewcontroller nswindowcontroller

2
推荐指数
1
解决办法
5752
查看次数

第一个 mac 应用程序 - 推送视图控制器

我有一个问题,我做了一些 iphone 应用程序,现在我想做一个小 mac 应用程序。

从一个干净的应用程序中,我在 MainMenu xib 上添加了一个按钮,然后将 NSViewController 添加到 MainMenu(来自 IB)和一个 Action。我用一个 nib 文件和一个按钮创建了一个新的 NSViewController (FirstViewController)。现在我只想创建一个从 MainMenu 推送 FirstController 的函数和一个从 FirstController 推送 MainMenu 的简单函数。

像这样的东西

ViewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController: ViewController animated:YES];
Run Code Online (Sandbox Code Playgroud)

我该怎么做???

macos cocoa nsviewcontroller

2
推荐指数
1
解决办法
3659
查看次数

你如何在 OS X 10.10 故事板的 popover segue 上指定箭头的原点

我在 OS X 10.10 应用程序中玩故事板。我有一个NSTableView,当您单击特定行时会打开一个转场,该转场会转到包含NSViewController.

你如何指定NSPoint弹出框的箭头原点?现在,它只是指向NSTableView中间。我以为我可以在 中做到这一点prepareForSegue,但我似乎无法弄清楚。 prepareForSegue似乎没有理解NSViewController包含在NSPopover

有任何想法吗?

macos objective-c nsviewcontroller nspopover

2
推荐指数
1
解决办法
1070
查看次数

在 OS X 中使用 NSViewController 在视图之间切换

如何使用视图控制器在多个视图之间切换(借助 IBAction)?

这是我到目前为止编写的代码:

在接口文件中我做了一个IBAction:

-(IBAction)Next;
Run Code Online (Sandbox Code Playgroud)

在实现文件中我写了这样的内容:

- (IBAction)Next
{
  SecondPopovercontrol *second = [[SecondPopovercontrol alloc] initWithNibName:nil bundle:nil];
  [self presentingViewController:second animated: YES completion:NULL]; // This is the step I am facing issues with
}
Run Code Online (Sandbox Code Playgroud)

我无法运行它 - 2 个视图控制器的名称是:WOMPopoverControllerSecondPopovercontrol

错误是:

“WOMPopoverController 没有可见的 @interface 声明呈现 Viewcontroller:animated:completion 的选择器”

我是 StackExchange 的新手,所以如果我的问题有任何不一致之处,请告诉我。并且,请指导我如何解决这个问题。

谢谢

macos objective-c nsviewcontroller xcode6

2
推荐指数
1
解决办法
3549
查看次数

添加完成处理程序到presentViewControllerAsSheet(NSViewController)?

我正在尝试AddSoundEffect为我的主窗口/视图控制器(我正在使用故事板)提供工作表配置视图(),并且当配置视图控制器被解除时,获取在AddSoundEffect视图中输入的值并将其传递回主视图.我在主视图控制器中的当前代码:

presentViewControllerAsSheet(self.storyboard!.instantiateControllerWithIdentifier("AddSoundEffect") as! AddSoundViewController
Run Code Online (Sandbox Code Playgroud)

AddSoundViewController.swift文件中,解雇它的代码是:

self.dismissViewController(self)
Run Code Online (Sandbox Code Playgroud)

为了传递数据,我有一个独立于类的元组,我将数据保存到.如何添加完成处理程序presentViewControllerAsSheet,并且(可选)是否有更好的方法在视图控制器之间传递数据?

设置:Xcode版本6.4,OS X 10.10.4

macos event-handling nsviewcontroller swift

2
推荐指数
1
解决办法
1387
查看次数

用户调整 AVPlayerView 大小时强制纵横比 - Swift OS X Cocoa

我希望能够强制 AVPlayerView 具有 16:9 的纵横比,即使用户决定调整窗口大小。

现在我有了它,以便我的视图以 16:9 的比例 (800x450) 自动打开

截图:http : //imgur.com/FzqRAiO

问题是,如果用户决定调整窗口大小,纵横比可能会倾斜并导致视频周围出现大的黑色矩形。

截图:http : //imgur.com/mCdVOcp

有什么可能的方法可以快速有效地保持/强制纵横比?

macos cocoa nswindow nsviewcontroller swift

2
推荐指数
1
解决办法
915
查看次数

NSTextFields与nextKeyView之间的标签

我有一个具有以下布局的NSViewController,使用故事板设置:

每个NSTextField的nextKeyView出口按照屏幕截图中显示的顺序配置为下一个NSTextField.例如,我在IB中选择了服务器NSTextField,并从Connectivity检查器中的nextKeyView插座拖动到登录NSTextField,并对其余字段执行相同的操作.

启动应用程序后,任何字段上的任何选项卡按下都会将选择移动到第一个NSTextField.如何在字段之间实现所需的标签?

我在各自的WindowController中试过这个,但无济于事:

- (void)windowDidLoad {
    [super windowDidLoad];

    self.window.initialFirstResponder = self.serverTextField;
}
Run Code Online (Sandbox Code Playgroud)

macos cocoa interface-builder nstextfield nsviewcontroller

2
推荐指数
1
解决办法
634
查看次数

设置 nspopover 的位置

我有一个视图控制器 (A),它将显示另一个视图控制器 (B) 作为弹出窗口。

在我的 VC (A) 中是一个带有这个 IBAction 的 NSButton:

self.presentViewController(vcPopover, asPopoverRelativeTo: myButton.bounds, of: myButton, preferredEdge: .maxX, behavior: .semitransient)
Run Code Online (Sandbox Code Playgroud)

结果:

在此处输入图片说明

现在我想改变我的弹出框的位置 - 我想把它向上移动。

我试过这个:

let position = NSRect(origin: CGPoint(x: 100.0, y: 120.0), size: CGSize(width: 0.0, height: 0.0))
self.presentViewController(vcPopover, asPopoverRelativeTo: position, of: myButton, preferredEdge: .maxX, behavior: .semitransient)
Run Code Online (Sandbox Code Playgroud)

但立场不变

另一个例子

在此处输入图片说明

我有一个分段控件。如果您单击“1”段,将显示一个弹出窗口(与上面的代码相同)。但是箭头指向段“2”而不是段“1”

macos nsviewcontroller nspopover swift

2
推荐指数
1
解决办法
1719
查看次数