2010-05-27 22 views
18

मैंने कोको एप्लिकेशन में डिलीट कार्यक्षमता लागू की है, अब जब मैं हटाएं बटन पर क्लिक करता हूं तो मैं एक संदेश बॉक्स दिखाना चाहता हूं।मैं कोको एप्लिकेशन में एक संदेश बॉक्स कैसे कार्यान्वित करूं?

उत्तर

41

NSAlert पर एक नज़र डालें, जो एक तुल्यकालिक -runModal विधि है:

NSAlert *alert = [[[NSAlert alloc] init] autorelease]; 
[alert setMessageText:@"Hi there."]; 
[alert runModal]; 

पीटर उल्लेख के रूप में, एक बेहतर विकल्प खिड़की पर चेतावनी as a modal sheet उपयोग करने के लिए है, जैसे:

[alert beginSheetModalForWindow:window 
       modalDelegate:self 
      didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:) 
       contextInfo:nil]; 

बटन -addButtonWithTitle::

[a addButtonWithTitle:@"First"]; 
[a addButtonWithTitle:@"Second"]; 
के माध्यम से जोड़ा जा सकता है 210

वापसी कोड आपको यह बताती है बटन दबाया गया था:

- (void) alertDidEnd:(NSAlert *)a returnCode:(NSInteger)rc contextInfo:(void *)ci { 
    switch(rc) { 
     case NSAlertFirstButtonReturn: 
      // "First" pressed 
      break; 
     case NSAlertSecondButtonReturn: 
      // "Second" pressed 
      break; 
     // ... 
    } 
} 
+3

और भी बेहतर, खिड़की पर एक चादर कि हटाएँ बटन होता है के रूप में चेतावनी शुरू:

func messageBox() { let alert = NSAlert() alert.messageText = "Do you want to save the changes you made in the document?" alert.informativeText = "Your changes will be lost if you don't save them." alert.addButtonWithTitle("Save") alert.addButtonWithTitle("Cancel") alert.addButtonWithTitle("Don't Save") alert.beginSheetModalForWindow(window, completionHandler: savingHandler) } func savingHandler(response: NSModalResponse) { switch(response) { case NSAlertFirstButtonReturn: println("Save") case NSAlertSecondButtonReturn: println("Cancel") case NSAlertThirdButtonReturn: println("Don't Save") default: break } } 

मामले में आप एक तुल्यकालिक संस्करण चाहते हैं । इस तरह, उपयोगकर्ता आपके आवेदन में किसी अन्य विंडो का उपयोग जारी रख सकता है। –

+0

वाह यह ठीक काम कर रहा है। लेकिन इस चेतावनी में और बटन कैसे लगाएं और बटन बटन कैसे प्राप्त करें – mikede

+1

@mik: ['-addButtonWithTitle:'] (http://developer.apple.com/mac/library/ प्रलेखन/कोको/वैचारिक/संवाद/कार्य/UsingAlerts.html)। आपकी सहायता करने वाले दस्तावेज़ों में एक [अलर्ट पर विशेष] (http://developer.apple.com/mac/library/documentation/cocoa/conceptual/Dialog/Tasks/UsingAlerts.html) भी है। –

6

लंबे समय स्वीकार किए जाते हैं जवाब के बाद से पारित कर दिया है और चीजें बदल गई:

  • स्विफ्ट अधिक से अधिक लोकप्रिय होता जा रहा है।
  • beginSheetModalForWindow(_:modalDelegate:didEndSelector:contextInfo:) बहिष्कृत है, हमें इसके बजाय beginSheetModalForWindow:completionHandler: का उपयोग करना चाहिए। स्विफ्ट में

नवीनतम कोड नमूना:

func messageBox() { 
    let alert = NSAlert() 
    alert.messageText = "Do you want to save the changes you made in the document?" 
    alert.informativeText = "Your changes will be lost if you don't save them." 
    alert.addButtonWithTitle("Save") 
    alert.addButtonWithTitle("Cancel") 
    alert.addButtonWithTitle("Don't Save") 
    let result = alert.runModal() 
    switch(result) { 
    case NSAlertFirstButtonReturn: 
     println("Save") 
    case NSAlertSecondButtonReturn: 
     println("Cancel") 
    case NSAlertThirdButtonReturn: 
     println("Don't Save") 
    default: 
     break 
    } 
} 
+0

आपने मेरा दिन बचाया! – cmcromance

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