2012-12-31 12 views
5

मैं एक NSWindow सरल कोड जोड़ना चाहते है:NSwindow गायब

NSWindow* myWindow; 
myWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(100,100,300,300) 
             styleMask:NSTitledWindowMask 
             backing:NSBackingStoreBuffered 
              defer:NO]; 
[myWindow makeKeyAndOrderFront:nil]; 

और विंडो प्रकट होता है के लिए एक दूसरे तो गायब हो जाता है। क्या गलत है?

  • Xcode 4.5.2
  • इस macbookpro i5 10.8.2

अपने जवाब के लिए धन्यवाद।

उत्तर

10

आप खिड़की को बनाए नहीं रख रहे हैं।

एक संपत्ति के रूप में .h में NSWindow* myWindow; परिभाषित करें।


मीटर में ज

@property (strong)NSWindow* myWindow; 

में

- (IBAction)button:(id)sender { 

    if (self.myWindow==nil){ 
     self.myWindow= [[NSWindow alloc] initWithContentRect:NSMakeRect(100,100,300,300) 
               styleMask:NSTitledWindowMask 
               backing:NSBackingStoreBuffered 
                defer:NO]; 
    } 

    [self.myWindow makeKeyAndOrderFront:NSApp]; 

} 

संपादित करें:

यदि आपने एकाधिक विंडो एक ही बटन से खोलना चाहते हैं। एक सरणी

बनाएं ज

@property(strong) NSMutableArray *myWindowArray; 

में मीटर में

- (IBAction)button:(id)sender { 
    self.myWindow= [[NSWindow alloc] initWithContentRect:NSMakeRect(100,100,300,300) 
                styleMask:NSTitledWindowMask 
                backing:NSBackingStoreBuffered 
                 defer:NO]; 


    [self.myWindowArray addObject:self.myWindow]; 

    for (NSWindow *win in self.myWindowArray) { 
     [win makeKeyAndOrderFront:NSApp]; 

    } 
} 

संपादित करें 2:

application here का पता लगाएं।

+0

इसे "self.myWindow'" बनाएं और उत्तर बहुत बेहतर होगा। साथ ही, आपको शायद यह देखने के लिए एक जांच करने की आवश्यकता है कि कोई नया निर्माण करने से पहले "self.myWindow'" को निर्दिष्ट विंडो है या नहीं। –

+0

ज़रूर ... अद्यतन :) –

+0

धन्यवाद। अच्छी तरह से काम। –

संबंधित मुद्दे