objective-c - 使用IB连接NSImageView查看?

标签 objective-c cocoa xcode macos

到目前为止,我只在 iPhone 上编程过,所以 Cocoa 在某些方面对我来说有点令人困惑。这就是我遇到困难的地方。我希望我的窗口的背景是不可见的,并且没有标题栏。像这样的事情:

enter image description here

这是我的做法:

我将我的窗口的类设置为自定义窗口,我是这样创建的:

自定义窗口.h

#import <Foundation/Foundation.h>
#import <Cocoa/Cocoa.h>


@interface CustomWindow : NSWindow {
    @private
    NSPoint initialLocation;
}

@property(assign)NSPoint initialLocation;

@end

自定义窗口.m

//trimmed to show important part
#import "CustomWindow.h"

@implementation CustomWindow
@synthesize initialLocation;

- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag {
    // Removes the window title bar
    self = [super initWithContentRect:contentRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO];
    if (self != nil) {
        [self setAlphaValue:1.0];
        [self setOpaque:NO];
    }
    return self;
}

@end

现在,在该窗口的 .xib 文件中,我已在窗口上添加了一个自定义 View 。我已将 View 类设置为我创建的继承自 NSView 的自定义类。我的设置方法如下:

MainView.h

#import <Cocoa/Cocoa.h>

@interface MainView : NSView {
@private
//nothing to see here, add later
}

@end

MainView.m

//trimmed greatly again to show important part
#import "MainView.h"

@implementation MainView

- (id)initWithFrame:(NSRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
    }

    return self;
}

- (void)drawRect:(NSRect)rect {
    // Clear the drawing rect.
    [[NSColor clearColor] set];
    NSRectFill([self frame]);

}

@end

这是我的问题。我已将 NSImageView 添加到 Interface Builder 中的自定义 View (MainView)。但是,由于某种原因,我无法弄清楚如何将此 ImageView 连接到自定义 View 中的实例变量。它们似乎无法像我在创建 iPhone 应用程序时通常那样进行连接。有什么想法如何做到这一点吗?

最佳答案

您可以像连接 iOS 程序一样连接在 Mac OS X 中的 XIB 中创建的对象。只需将 NSImageView 属性添加到主视图中,将其标记为 IBOutlet 并将其连接起来即可。

例如,

在 MainView.h 中为您的 NSImageView 创建一个属性并使其成为 IBOutlet:

#import <Cocoa/Cocoa.h>

@interface MainView : NSView {
  NSImageView *imageView;
}

@property(retain) IBOutlet NSImageView *imageView;

@end

在界面生成器中,确保自定义 View 的类设置为 MainView,为此,请单击自定义 View XIB 中的文件所有者对象,然后在检查器中选择标识选项并输入 MainView 作为类类型.

接下来,按住 CTRL 键并单击文件的所有者,然后将箭头拖动到 NSImageView 并选择 imageView 导出。

这就是全部内容了。您现在应该能够从代码中引用 ImageView 。

关于objective-c - 使用IB连接NSImageView查看?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5087248/

相关文章:

ios - PageViewController 之前和之后调用两次并且索引不计为真

objective-c - 覆盖类别中的类实例方法时如何抑制链接器警告

ios - 1Password Pods iOS 库未找到

Cocoa输入重名验证如何?

iphone - 静态库中的类别/接口(interface)不自动完成?

ios - 用户登录使用 XCode ios

objective-c - ReactiveCocoa 信号,用于在观察身份验证状态时获取数据

sql - NSFetchRequest 未捕获属性已更改的对象

objective-c - 为什么我必须定义指针的类?

Swift 如何跳转到下一个 uitextfield