システムメニューバーにステータス項目があり、クリックするとポップオーバーが表示されます。私はアプリケーションが最初に起動されたときにpopoverを自動的に表示させたいと思います。 awakeFromNibメソッドに[self clickStatusBar:self]
を追加しようとしましたが、動作しません。誰でもこれを達成する方法を知っていますか?awakeFromNibの間にNSPopoverを表示する必要がありますか?
- (void)awakeFromNib {
statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
[statusItem setTitle:@"Locating..."];
[statusItem setTarget:self];
[statusItem setAction:@selector(clickStatusBar:)];
[statusItem setHighlightMode:YES];
}
- (void)clickStatusBar:(id)sender {
[[self popover] showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMinYEdge];
}
は私が
- (void)applicationDidFinishLaunching:(NSNotification *)notification {
[self clickStatusBar:self];
}
としてapplicationDidFinishLaunching:
を追加してみましたが、私は、アプリケーションが完全にはまだ発売されていませんawakeFromNib:
で -[AppDelegate bounds]: unrecognized selector sent to instance
私はそれを試みましたが、私はまだエラーが発生しています(私の更新された質問を参照してください) 。私は 'clickStatusBar'を間違って呼び出すと思います。 – wigging
あなたはそのアクションをアプリケーションデリゲートで呼び出すことはできません。コンセントをアプリケーションデリゲートに配置し、そのステータスアイテムからコンセントへの接続をIBに入れ、そのコンセント変数またはプロパティを介してアイテム内のアクションを呼び出す必要があります。 – febeling
申し訳ありませんが、混乱しました。 IBOutletの部分は無視してください(それに応じてアスカーを編集します)。あなたはステータス項目をアクションの送信者として期待しています。したがって、プログラムで呼び出すときは、現在のところでは 'self'のところに渡す必要があります。 (私は、上記のコードはコントローラかアプリケーションデリゲートであると仮定し、ポップオーバーは既にクリックして動作します) – febeling