Um eine View von der Superview zu entfernen, haben wir gelernt removeFromSuperview aufzurufen.

[MainView addSubview:mySubView];

Aufruf zum entfernen:

[mySubView removeFromSuperview];

Heute habe ich eine recht nützliche Methode unter subviews gefunden: makeObjectsPerformSelector

Diese Methode ermöglicht es mir, alles subviews von zB. dem ersten gefundenen UIWindow (objectAtIndex:0) zu entfernen. Ein Beispiel könnte so aussehen:

[[[[application windows] objectAtIndex:0] subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];

application ist in diesem Fall eine Objekt-Instanz vom Typ UIApplication.

Wenn also alle Views entfernt werden müssen – zB. zum Speicher einsparen, kann diese Kombination von Methodenaufrufen verwendet werden.

 

Mal wieder ein Fehler, der einen zur Verzweiflung bringen kann:

-[__NSArrayI isEqualToString:]: unrecognized selector sent to instance

*** Terminating app due to uncaught exception ‘NSInvalidArgumentException’, reason: ‘-[__NSArrayI isEqualToString:]: unrecognized selector sent to instance

Die Lösung des Problems ist erdenklich einfach:

Da es sich hierbei (in meinem aktuellen Projekt) um ein Problem beim erstellen der Tabellenzeile einer TableView handelt, zeige ich den Ausschnitt cellForRowAtIndexPath.

Der Fehlerverursachende Code sieht wie folgt aus:

NSArray *curArray = [NSArray arrayWithObject: [self.results objectAtIndex:indexPath.row]];
cell.text = [curArray valueForKey:@"name"];
[curArray release];

Beheben kann man das Problem so:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    id curObj = [self.results objectAtIndex:indexPath.row];
    cell.textLabel.text = [curObj valueForKey:@"name"];

    return cell;
}

Der Fehler ist hier in den vorletzten Zwei zeilen behoben.

© 2010-2012 RenePardon BoonWeb Suffusion theme by Sayontan Sinha