OS X

2014-11-01 14 views
18

için storyboard kullanarak başka bir pencerenin başlatılması Xcode6'da storyboard kullanan bir Cocoa uygulaması oluşturdum. Şablon olarak Xcode, uygulama için bir pencere sağlar. Program ilk yüklendiğinde gösterilecek ikinci bir pencere eklemek istiyorum. Yani temelde iki pencere görünecek.OS X

Main.storyboard'a ilk pencerenin de bulunduğu bir pencere denetleyicisi yerleştirdim. Ancak, program başladığında bu ikinci pencereyi gösterme yolunu bulamadım. Lütfen yardım eder misiniz?

Teşekkür ederiz.

cevap

33

Storyboard'unuzda ikinci Pencere Denetleyicinizi seçin. senin applicationDidFinishLaunching olarak

@property NSWindowController *myController; 

: kimlik denetçisinde, kurmak, uygulama temsilcinize içinde,

Sonra pencere denetleyicisi için bir mülk bu pencere denetleyicisi için bir ad, örneğin secondWindowController belirtmek yöntem uygulanmasını oluşturmak Storyboard'a bir başvuru. Bu şekilde pencere denetleyicinize film şeridinden erişebilirsiniz. Bundan sonra, tek yapmanız gereken, pencere denetleyicinizi showWindow: yöntemini göndererek pencereyi görüntülemektir.

#import "AppDelegate.h" 

@interface AppDelegate() 

@end 

@implementation AppDelegate 
@synthesize myController; 

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
NSStoryboard *storyBoard = [NSStoryboard storyboardWithName:@"Main" bundle:nil]; // get a reference to the storyboard 
myController = [storyBoard instantiateControllerWithIdentifier:@"secondWindowController"]; // instantiate your window controller 
[myController showWindow:self]; // show the window 
} 

@end 
+1

teşekkürler! Ayrıca "Storyboard ID" yi "Main" olarak ayarladım ve işe yaradı. – Hakan

+0

'' '[storyBoard instantiateInitialController]' '' ID sorununu atlamak için kullanılabilir (istediğiniz pencereyi ayarladığınız sürece, storyboard dosyasındaki ilk görüntüleyici denetleyicisi olarak). – Supertecnoboff

4

Swift 3 versiyon:

var myWindowController: NSWindowController! 

override init() { 
    super.init() 

    let mainStoryboard = NSStoryboard.init(name: "Main", bundle: nil) 
    myWindowController = mainStoryboard.instantiateController(withIdentifier: "myWindowControllerStoryboardIdentifier") as! NSWindowController 
    myWindowController.showWindow(self) 
} 

Eğer işlev dışındaki myWindowController tanımlamak veya başka pencere görünmez emin olun.

Bunu daha önce kullanabilmeniz için init() (AppDelegate) uygulamasında yapmak daha iyidir.

1

hızlı 4 versiyon:

var monitorcontroler: NSWindowController! 

override init() { 
    super.init() 

    let mainStoryboard = NSStoryboard.init(name: NSStoryboard.Name(rawValue: "Main"), bundle: nil) 
    monitorcontroler = mainStoryboard.instantiateController(withIdentifier: NSStoryboard.SceneIdentifier(rawValue: "moniteur")) as! NSWindowController 
    monitorcontroler.showWindow(self) 
}