2014-10-15 3 views
1

Я разработчик iOS, и я хочу создать простое настольное приложение. Я думал, что переключатель будет идеальным, но это не так.Приложение Cocoa не показывает textview

Я создал приложение для какао (из шаблона 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] загрузил «(нулевой)» нить, но не было установлено никакого представления.

Я не знаю, как это решить. Как я могу создать приложение без наконечника, как и в iOS?

ответ

1

Если вы не загружаете представление из NIB, для контроллера вида очень мало необходимости.

Вместо этого отмените контроллер и подкласс вида NSView и установите его как содержимое содержимого окна.

Примечание: вы делаете стержень для своей собственной спины, не используя IB.

+0

Действительно? На iOS я не использую раскадровки или что-то еще, и я просто подклассифицирую UIViewController, чтобы установить его вручную. – user1007522

+0

@ user1007522 Вы можете использовать контроллеры представлений под OSX, но их основная цель - облегчить загрузку из NIB, поэтому вам не нужны они в вашем случае. – Droppy

+0

На заметку: когда я использую NIB, я не могу использовать масонство (рамки макета). И я ненавижу делать автоматическую компоновку в построителе пользовательского интерфейса. – user1007522

Смежные вопросы