2014-10-15 1 views
1

저는 iOS 개발자로서 간단한 데스크톱 앱을 만들고 싶습니다. 스위치가 완벽해질 것이라고 생각했지만 그렇지 않았습니다.코코아 앱에 텍스트보기가 표시되지 않습니다.

(xCode 템플릿에서) 코코아 앱을 만들었습니다.

@interface MainViewController() 
@property (nonatomic, strong) NSTextView *test; 
@end 

@implementation MainViewController 

-(instancetype) init 
{ 
    self = [super init]; 
    if(self) 
    { 
     NSLog(@"%s", __PRETTY_FUNCTION__); 
     _test = [[NSTextView alloc] init]; 
     [_test setString:@"DKDDK"]; 
     [self.view addSubview:_test]; 

     [_test mas_makeConstraints:^(MASConstraintMaker *make) { 
      make.edges.equalTo(self.view); 
     }]; 
    } 
    return self; 
} 

@interface MainViewController : NSViewController 

@end 

그리고 난 그냥 템플릿에 의해 생성 된 NSWindow 표시 사용 :

@interface AppDelegate() 

@property (weak) IBOutlet NSWindow *window; 
@end 

@implementation AppDelegate 

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
    // Insert code here to initialize your application 

    MainViewController * mainView = [[MainViewController alloc] init]; 


    [self.window.contentView addSubview:mainView.view]; 
    mainView.view.frame = ((NSView*)self.window.contentView).bounds; 
} 

나는 이런 내 첫 번째 컨트롤러를 썼다 그래서 지금은 사용자 인터페이스 빌더와 물건을 사용하지 않으

[NSViewController loadView]가 "(null)"펜촉을로드했지만보기가 설정되지 않았습니다.

이 문제를 해결하는 방법을 모르겠습니다. iOS에서와 마찬가지로 펜촉없이 앱을 만들려면 어떻게해야합니까?

답변

1

NIB에서보기를로드하지 않으면보기 컨트롤러가 거의 필요하지 않습니다.

대신보기 컨트롤러와 하위 클래스 NSView을 삭제하고이를 창 콘텐츠보기로 설정하십시오.

참고 : IB를 사용하지 않고 나만의 막대를 만들고 있습니다.

+0

정말요? iOS에서는 스토리 보드를 사용하지 않고 UIViewController를 하위 클래스로 설정하여 수동으로 설정합니다. – user1007522

+0

@ user1007522 OSX에서보기 컨트롤러를 사용할 수 있지만 주된 목적은 NIB에서로드하는 것을 용이하게하는 것이므로 사용자가 필요하지 않습니다. – Droppy

+0

참고 : NIB를 사용하면 Masonry (자동 레이아웃 프레임 워크)를 사용할 수 없습니다. 그리고 사용자 인터페이스 빌더에서 자동 레이아웃을하는 것이 싫다. – user1007522

관련 문제