2011-04-05 38 views

Trả lời

42

Nếu bạn muốn tạo ra một lớp riêng biệt cho New Window, đây là những bước sau:

  1. Tạo một lớp mà là một lớp con của NSWindowController ví dụ NewWindowController
  2. Tạo một cửa sổ xib cho lớp NewWindowController.
  3. Mở nút đang nhấp chuột như:

    NewWindowController *windowController = [[NewWindowController alloc] initWithWindowNibName:@"You Window XIB Name"]; 
    [windowController showWindow:self]; 
    
+0

cảm ơn bạn ... nó hoạt động tốt ... :) bạn đã giải thích tốt ... cảm ơn bạn ... Tôi đã tìm kiếm một vài ngày và bây giờ nó đã làm việc tuyệt vời ... :) – ShinuShajahan

+5

Tôi đã thử cùng một điều nhưng vấn đề tôi gặp phải là cửa sổ mới sẽ đóng ngay lập tức sau khi được hiển thị. Tôi không có mã trong đó vì vậy tôi không thấy tôi đang làm gì sai. Ý tưởng nào? – Interfector

+0

@Interfector i am có cùng một vấn đề .. đã u con số nó ra? –

11
NSWindowController * wc=[[NSWindowController alloc] initWithWindowNibName:@"your_nib_name"]; 
[wc showWindow:self]; 
+0

@ Saurabh-wow! Cảm ơn nhiều! nó làm việc ... cảm ơn ... Tôi mới đến stackoverflow và nó khá ấn tượng ... :) – ShinuShajahan

+0

thực sự tôi đã tìm kiếm cho cùng một vài ngày qua! :) Tôi đã thử khác nhau nhưng không phân lớp NSWindowController !!! – ShinuShajahan

+0

Tại sao câu trả lời phụ được đánh giá cao hơn xếp hạng này? Chắc chắn không phải phân lớp là một câu trả lời đơn giản hơn, thanh lịch hơn? – fatuhoku

6
  1. Tạo một lớp mà là một lớp con của NSWindowController ví dụ NewWindowController
  2. Tạo một cửa sổ xib cho lớp NewWindowController.
  3. Mở nút đang nhấp chuột như:

    NewWindowController *controllerWindow = [[NewWindowController alloc] initWithWindowNibName:@"You Window XIB Name"]; [controllerWindow showWindow:self];

Có, nhưng cửa sổ đóng nếu mã này là bên trong của một số func. Đây là giải pháp.

Trong blah.h

@interface blah : NSObject { 
    ... 
    NewWindowController *controllerWindow; 
    ... 
} 

Trong blah.m

@implementation 
... 
    -(IBAction)openNewWindow:(id)sender { 
     controllerWindow = [[NewWindowController alloc] initWithWindowNibName:@"You Window XIB Name"]; 
     [controllerWindow showWindow:self]; 
    } 
... 
+2

Bạn nên thêm nhận xét vào câu trả lời hiện có (khi bạn có thể) thay vì trích dẫn nó, trả lời và sau đó đăng bài của riêng bạn. –

+1

@AdrianWragg, vâng, tôi là người mới, vì vậy tôi xin lỗi vì điều đó. – WildMassacre

+1

Vâng ... và làm thế nào tôi có thể đóng cái trước? Mã này giữ hai cửa sổ được mở cùng một lúc. – mthama

5

Swift 3: Trong kịch bản của bạn đi đến WindowController -> nhận dạng thanh tra -> storyBoardID: điền: MainWindow. Sau đó từ bộ điều khiển chế độ xem hiện tại của bạn, hãy liên kết nút trên bảng phân cảnh theo phương pháp sau:

@IBAction func newWindow(_ sender: Any) { 
    let myWindowController = self.storyboard!.instantiateController(withIdentifier: "mainWindow") as! NSWindowController 
    myWindowController.showWindow(self) 
} 
Các vấn đề liên quan