2016-12-19 10 views
0

今、私はObjCのいくつかの行を設定してデフォルトのプリンタを設定し、私のアプリケーションではその新しいプリンタの名前でラベルを更新する必要がありますワーキング。私のコントローラで実行時にデフォルトのプリンタ名を更新する

、私は次のようしている:

この小さなメソッドを呼び出します
[self updatePrinter]; 

- (void)updatePrinter { 
    NSPrintInfo *printInfo = [NSPrintInfo sharedPrintInfo]; 
    self.printerName.stringValue = printInfo.printer.name; 

    NSLog(@"Printer: %@", printInfo.printer.name); 
} 

は、それが(viewDidLoadに)私の方法を打つ、それはラベルprinterNameを適切に移入されます。

私が設定されている新しいプリンタのデフォルトをポーリングするタイマーを追加してみました:

[NSTimer scheduledTimerWithTimeInterval:2.0 
           target:self 
           selector:@selector(updatePrinter) 
           userInfo:nil 
           repeats:YES]; 

これは正しく動作しますが、私は、システム環境設定を開き、デフォルトのプリンタを変更した場合、それはの名前を印刷し続け古いデフォルト。アプリを再起動すると、動作が異なります。

新しいデフォルトを実行時にアプリに反映させるにはどうすればよいですか?

答えて

1

は、代わりに再び同じNSPrintInfoオブジェクトを使用しての、

[[NSPrintInfo alloc] initWithDictionary:@{}]; 
+0

おかげで新しいオブジェクトを作成します。私は、PM *関数を含む複雑な解決策を思いついたので、initWithDictionary:すべての設定が必要だと思った。これは私にとって非常に簡単かつ効率的に機能します。 – drewpotential

関連する問題