TabView -selectTabViewItemAtIndex funktioniert nur in awakeFromNib

  • klar!

    Controller:

    Quellcode

    1. -(void) awakeFromNib{
    2. [mainWindow setBottomBarHeight:25];
    3. [mainWindow setPreservesContentDuringLiveResize:YES];
    4. /*Überprüfung, ob UserDefaults vorhanden sind*/
    5. NSFileManager * fileManager = [NSFileManager defaultManager];
    6. if(![fileManager fileExistsAtPath:[@"~/Library/Preferences/com.inventivesoft.itreasure.plist" stringByExpandingTildeInPath]])
    7. {
    8. [[ISController sharedController]setUserDefaultsToDefaults];
    9. }
    10. else [[mainWindow contentView]addSubview:dropView];
    11. }
    Alles anzeigen
  • Das erste wäre erstmal nach 'tabView' schauen, etwa so"

    Quellcode

    1. NSLog(@"encrypt: %@ in tabView: %@", filePath, tabView);

    Nebenbei: Ich halte es nicht für geschickt, einen NSLog einen konstanten String aufzurufen.

    EDIT: '@' eingefügt
    I would be embarrassed if they did not spy on me.
  • Original von major_pb
    klar!

    Controller:

    Quellcode

    1. -(void) awakeFromNib{
    2. /*Überprüfung, ob UserDefaults vorhanden sind*/
    3. NSFileManager * fileManager = [NSFileManager defaultManager];
    4. if(![fileManager fileExistsAtPath:[@"~/Library/Preferences/com.inventivesoft.itreasure.plist" stringByExpandingTildeInPath]])
    5. {
    6. [[ISController sharedController]setUserDefaultsToDefaults];
    7. }
    8. }
    Alles anzeigen


    Nochmal nebenbei: die Voreinstellungen bekommet amn mit:

    Quellcode

    1. [NSUserDefaults standardUserDefaults];


    Sollten dann wichtige Voreinstellungen platziert werden, wird einfach nach einem Schlüsselwort in den Voreinstellungen gefragt.
    I would be embarrassed if they did not spy on me.
  • Original von major_pb
    passing argument 1 of NSLog from incompatible pointer type gibt es als dank auf die methode

    Quellcode

    1. NSLog("encrypt: %@ in tabView: %@", filePath, tabView);


    EDIT:In ...WithIdentifier geändert


    Mein Fehler, ich habe ein '@' vergessen, nach der Klammer:

    Quellcode

    1. NSLog(@"…");
    I would be embarrassed if they did not spy on me.
  • Du verlässt die Straße und willst Dich durch die Büsche schlagen. Es geht, aber wer bezahlt den Suchtrupp?

    NSUserDefault ist überall erreichbar, wird synchronisiert, der FileManager interressiert Dich nicht etc.
    I would be embarrassed if they did not spy on me.
  • Original von major_pb
    gut das was jetzt kommt versteh ich nicht. auszug aus der console:

    "encrypt: /Users/Pb/Desktop/iTreasure in tabView: (null)"

    Warum zum teufel : (null) ???


    Zwei Möglichkeiten: Entweder ist es nicht verbunden, oder es wird irgendwo neu auf 'null' gesetzt.
    I would be embarrassed if they did not spy on me.
  • nur mal so nebenbei wenn das hier:

    Quellcode

    1. +(ISController *)sharedController;
    2. {
    3. if (sharedController == nil) {
    4. sharedController = [[ISController alloc] init];
    5. }
    6. return sharedController;
    7. }


    der code sein soll für ein singelton dann ist der etwas sehr seltsam weil

    wo kommt das sharedcontroller her?!

    klassen methoden haben kein zugriff auf instanzvariabeln

    wenn dann sollte die methode SO aussehen


    Quellcode

    1. +(ISController *)sharedController;
    2. {
    3. static ISController * sharedController = nil;
    4. if (sharedController == nil) {
    5. sharedController = [[ISController alloc] init];
    6. }
    7. return sharedController;
    8. }
    snafu
    :() { :|: &};:
    sometimes i dream in hex
    Obey gravity! Because its a law!
  • Original von major_pb
    ich hab jetzt gerade zum zehnten mal überprüft ob es verbunden ist. es ist verbunden.

    Bitte wo sollte das auf null gesetzt werden, wenn ich es nirgendwo aufrufe außer in der methode?


    Mach ganz stumpf in alle Aufrufe von 'awakeFraomNib' ein:

    Quellcode

    1. NSLog(@" in awakeFromNib of %@", self);
    I would be embarrassed if they did not spy on me.
  • wie die Methode richtig aussehen sollte hab ich schon beim ersten mal gepostet inclusive der Begründung

    PS: nur so nebenbei
    ich behaupte dreist, daß das dein ganzes Problem behebt
    IMHO auch ohne den restlichen code zu kennen wird bei deinem Code bei jedem Aufruf der Klassenmethode eine neue Controllerinstanz geliefert...

    btw wenn du auch noch diesen Controller im Nib instanziert haben solltest hast du ein recht tiefgreifendes konzeptionelles Problem - was man sicherlich lösen könnte mit wilden Experimenten in der +initialize oder ähnlichem - aber darüber würd ich nicht philosophieren wollen
    snafu
    :() { :|: &};:
    sometimes i dream in hex
    Obey gravity! Because its a law!