XCODE4 - Interface Builder: UIToolbar-Fehler

cropfaktor

Aktives Mitglied
Thread Starter
Dabei seit
18.01.2008
Beiträge
1.148
Reaktionspunkte
119
Klarer Fehler in meinen Augen. Ich nutze den Code aus der Apple-Hilfe "UISplitViewControllerDelegate", um einen Menüpunkt für die Navigationsansicht meines SplitView-Controllers zu bekommen:

Code:
- (void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController: (UIPopoverController *)pc
{
    barButtonItem.title = @"Events";
    NSMutableArray *items = [[ersteToolbar items] mutableCopy];
    [items insertObject:barButtonItem atIndex:0];
    [ersteToolbar setItems:items animated:YES];
    [items release];
    //self.popoverController = pc;
}

// Called when the view is shown again in the split view, invalidating the button and popover controller.
- (void)splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
    NSMutableArray *items = [[ersteToolbar items] mutableCopy];
    [items removeObjectAtIndex:0];
    [ersteToolbar setItems:items animated:YES];
    [items release];
    //popoverController = nil;
}

Es erscheint nun auch brav der Toolbar-Button und mit einem Klick darauf öffnet sich das Menü, also die linke Seite des SplitView-Controllers.

Falsch! Denn es befindet sich noch ein äußerst lästiger zweiter Menübutton "Item" auf der Toolbar. Seit SDK4 wird dieser vollautomatisch hinzugefügt, was natürlich in keinem Apfelbeispiel der Fall ist.

Wie ich den wegbekomme :confused: Oder gar, wie ich den vorhandenen benutze?

Jemand eine Idee? Wie gewohnt, werde ich natürlich selbst weiter tüfteln.

Danke
Andreas
 
Nicht sehr elegant, funktioniert aber:
Code:
- (void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController: (UIPopoverController *)pc
{
    barButtonItem.title = @"Events";
    NSMutableArray *items = [[ersteToolbar items] mutableCopy];
    [items insertObject:barButtonItem atIndex:0];
    //warum auch immer, das ursprünglich Objekt "Item" wurde nicht ersetzt, also weg damit
    [items removeObjectAtIndex:1];
    [ersteToolbar setItems:items animated:YES];
    [items release];
    //self.popoverController = pc;
}

Damit ist das überflüssige "Item"-Müll-Toolbar-Button verschwunden.

Jetzt probiere ich mal aus, wie ich den nicht sehr hilfreichen Apfelcode verändern muss, damit das bereits vorhandene "Item" entsprechend genutzt werden kann.
 
Laut Buchmeinung soll nun mit jeder Drehung, die Schaltfläche für das Menü ein wenig weiter nach rechts wandern. Auch Apple sieht im Beispiel diesen Code zur Vermeidung vor:

Code:
// Called when the view is shown again in the split view, invalidating the button and popover controller.
- (void)splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
    NSMutableArray *items = [[ersteToolbar items] mutableCopy];
    [items removeObjectAtIndex:0];
    [ersteToolbar setItems:items animated:YES];
    [items release];
    //popoverController = nil;
}
:confused:

Bei mir wandert gar nichts und ich hab den Code einfach entfernt und gut ist. Funktioniert alles soweit tadellos. Ausser die Elemente in ein Array einlesen und den linken Button zu entfernen, nebst erneuter Zuweisung des Arrays zur Toolbar passiert hier nichts weiter. Wofür?
 
Zurück
Oben Unten