2010-11-19 12 views
2

Mac uygulamaları bir çok görüldüğü gibi bir NSToolbar ile çoklu paneli tercih penceresini kodlamak için çalışıyorum. programlı araç çubuğunu doldurma ama bu IB bütün araç çubuğunu kurarak tasarruf düşünülen "mekanik" bir sürü kod gerektirecek gibi görünüyor bunu birkaç dersler vardır. Her NSToolbar madde aşağıda eylemi çağırır ve etiketi (bir IBOutlet ile aynı uçlu başvurulan) görünümünü seçmek için kullanılır: Çoklu panel tercih penceresi için kullanılan bir NSToolbar'ın başlangıç ​​durumunu nasıl ayarlayabilirim?

-(IBAction)changeViewController:(id) sender { 
    NSToolbarItem *tbi = (NSToolbarItem*)sender; 
    NSString* label = [tbi label]; 
    NSInteger tag = [tbi tag]; 
    [self displayViewController:tag]; 
    NSWindow* window = [self window]; 
    [window setTitle:label]; 
} 

Sonra seçili/seçilmemiş bir görünüm vermek hangi her NSToolbarItem üzerinde Autovalidates set araç çubuğu öğeleri.

Şimdi burada benim problem: Ben başlangıç ​​durumunu ayarlamak için iyi bir yol bulmaya mümkün değildi. Pencereyi açtığım anda araç çubuğu öğelerinin hiçbiri seçili değil ve ben de bu kodu doğru şekilde seçmeme izin veren herhangi bir udpate alamıyorum. Ne ile geldi şudur:

- (void) awakeFromNib { 
    [self displayViewController:kGeneralPrefsTag]; 
    NSWindow* window = [self window]; 
    NSToolbar *toolbar = [window toolbar]; 
    [toolbar setSelectedItemIdentifier:@"generalPreferences"]; 
    [window setTitle:@"General"]; 
} 

Bunların hepsi gereksiz bilgiler şunlardır: 1) Sadece bu 2 için araç çubuğu öğesi için Öğe Tanımlayıcılarını ilan etmek gerekir) elle 1 tercih yineleyen ad pencere başlığını ayarlayabilmek için panel.

araç çubuğunu başlatmak için daha iyi bir yolu var mı? ChangeViewControllerAction'ı çağırması için araç çubuğunun ilk öğesini nasıl arayabilirim?

Teşekkürler.

cevap

5

Ben farklı sekmeler seçmek için araç çubuğunu kullanarak ve kullanılmış takip ediyorum:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    [item1 setEnabled: YES]; 
    [toolbar setSelectedItemIdentifier: @"needItToolbarItem"]; 

    [item2 setEnabled: YES]; 
    [item3 setEnabled: YES]; 
    [item4 setEnabled: YES]; 
} 

Bu

çok fazla laf kalabalığı olmadan ne istediğini beni almak gibiydi. Aradığınız cevabın bu olup olmadığından emin değilim, ama doğru yollardan biri gibi görünüyorsun.