Frage

UIBarButtonItem *rButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:NULL];

rButton.action = @selector(refreshAction);
self.navigationItem.rightBarButtonItem = rButton;
[rButton release];

Der obige Code funktioniert auf eine Schaltfläche erstellen und in der Navigationsleiste hinzufügen, aber wenn ich auf die Schaltfläche klicken stürzt die App mit einem EXC_BAD_ACCESS. Wenn ich auf Kommentar rButton.action = @selector (refreshAction); Klick auf die Schaltfläche wird nicht alles tun, aber es entweder nicht abstürzt.

- (void)refreshAction {
    NSLog(@"refreshAction");
}

Dieser Code ist in einer viewDidLoad Methode des Tableviewcontroller, die auf den Navigationstapel aus der NavigationViewController viewDidLoad Methode gedrückt wird.

Ich habe wahrscheinlich 3 Stunden damit verbracht, dies ohne Erfolg, zur Arbeit zu kommen.

War es hilfreich?

Lösung

Wie üblich Speicherverwaltung war der Schuldige. Laden der Tableviewcontroller aus dem Navigation:

NearbyTableViewController *tableController = [[[NearbyTableViewController alloc] initWithNibName:@"NearbyTableViewController" bundle:nil] autorelease];
self.nearbyTableController = tableController;   

[self pushViewController:self.nearbyTableController animated:YES];
[tableController release];

ein Objekt gesetzt Freigabe ... zu Autorelease ist der häufigste Fehler in der Speicherverwaltung sein. Löschen Sie diese Zeile [tableController release] löste das Problem

Andere Tipps

Glück gehabt, wenn Sie @selector(refreshAction) angeben, wenn Sie die Schaltfläche zu erstellen, das heißt:.

UIBarButtonItem *rButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refreshAction)];

Vielleicht ist das Ziel nicht gerettet werden, wenn Sie auch nicht die Aktion Initialisierungsstab angeben.

Ich bin mir nicht ganz 100% sicher, warum Ihr Code funktioniert nicht, aber die Wähler direkt im Konstruktor Einstellung funktioniert:

UIBarButtonItem *rButton = [[UIBarButtonItem alloc] 
    initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh   
                         target:self 
                         action:@selector(refreshAction)];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top