2017-06-08 7 views
1

最初に:私はSwift developpementで新しいです。
thisチュートリアルを使用して、トップバーのアイコンをクリックすると表示されるポップアップを作成しています。
NSStatusItem left click

だから私のAppDelehgateコードは次のとおりです。

func applicationDidFinishLaunching(_ aNotification: Notification){ 
    print("START !"); 
    if let button = statusItem.button { 
     button.image = NSImage(named: "logo"); 
     button.action = Selector(("togglePopover:")); 
     //button.target = self; 
    } 

    popover.contentViewController = QuotesViewController(nibName: "QuotesViewController", bundle: nil); 
} 

func togglePopover(envoyeur: AnyObject?){ 
    print("TOGGLE !"); 
    if popover.isShown{ 
     closePopover(sender: envoyeur) 
    } else { 
     showPopover(sender: envoyeur) 
    } 
} 

しかし、決して "TOGGLE!"テキストが表示され、イベントは機能しません。
私は "button.target = self;"私はそれをしなければクラッシュするので、コメントに。イベントは、のがtriggedているように見えるが、私はエラーが持っている:

START ! 
2017-06-08 15:55:29.116275+0200 MyWallpaper[7590:407660] -[MyWallpaper.AppDelegate togglePopover:]: unrecognized selector sent to instance 0x61000002a520 
2017-06-08 15:55:29.122570+0200 MyWallpaper[7590:407660] [General] -[MyWallpaper.AppDelegate togglePopover:]: unrecognized selector sent to instance 0x61000002a520 
2017-06-08 15:55:29.125822+0200 MyWallpaper[7590:407660] [General] (
    0 CoreFoundation      0x00007fffb36f32cb __exceptionPreprocess + 171 
    1 libobjc.A.dylib      0x00007fffc84fe48d objc_exception_throw + 48 
    2 CoreFoundation      0x00007fffb3774f04 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132 
    3 CoreFoundation      0x00007fffb3665755 ___forwarding___ + 1061 
    4 CoreFoundation      0x00007fffb36652a8 _CF_forwarding_prep_0 + 120 
    5 libsystem_trace.dylib    0x00007fffc90153a7 _os_activity_initiate_impl + 53 
    6 AppKit        0x00007fffb18e1721 -[NSApplication(NSResponder) sendAction:to:from:] + 456 
    7 AppKit        0x00007fffb13c5cc4 -[NSControl sendAction:to:] + 86 
    8 AppKit        0x00007fffb18ceff7 -[NSStatusBarButtonCell _sendActionFrom:] + 155 
    9 libsystem_trace.dylib    0x00007fffc90153a7 _os_activity_initiate_impl + 53 
    10 AppKit        0x00007fffb13c4426 -[NSCell trackMouse:inRect:ofView:untilMouseUp:] + 2481 
    11 AppKit        0x00007fffb1408272 -[NSButtonCell trackMouse:inRect:ofView:untilMouseUp:] + 798 
    12 AppKit        0x00007fffb18cea1f -[NSStatusBarButtonCell trackMouse:inRect:ofView:untilMouseUp:] + 327 
    13 AppKit        0x00007fffb13c2ddb -[NSControl mouseDown:] + 832 
    14 AppKit        0x00007fffb1a5d24f -[NSWindow(NSEventRouting) _handleMouseDownEvent:isDelayedEvent:] + 6341 
    15 AppKit        0x00007fffb1a59a6c -[NSWindow(NSEventRouting) _reallySendEvent:isDelayedEvent:] + 1942 
    16 AppKit        0x00007fffb1a58f0a -[NSWindow(NSEventRouting) sendEvent:] + 541 
    17 AppKit        0x00007fffb18d26d1 -[NSStatusBarWindow sendEvent:] + 581 
    18 AppKit        0x00007fffb18dd681 -[NSApplication(NSEvent) sendEvent:] + 1145 
    19 AppKit        0x00007fffb1158427 -[NSApplication run] + 1002 
    20 AppKit        0x00007fffb1122e0e NSApplicationMain + 1237 
    21 MyWallpaper       0x00000001000039ad main + 13 
    22 libdyld.dylib      0x00007fffc8de3235 start + 1 
    23 ???         0x0000000000000003 0x0 + 3 
) 

答えて

1

スウィフト#selector構文

button.action = #selector(togglePopover(_:)) // or just #selector(togglePopover) 
+0

感謝を使用しますが、私を返す:未解決の識別子の使用「togglePopover」:/ – Antoine

+0

てみてください編集された答えの他の構文。 – vadian

+0

ありがとうございます、それは働いています:D – Antoine