2012-04-13 17 views
1

ich diesen Code für eine benutzerdefinierte UITableViewCell gefunden haben:Verwirrende Syntax mit benutzerdefinierten UITableViewCell

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) 
{ 
    NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"MyCustomCell" owner:nil options:nil]; 

    MyCustomCell *customCell = [[MyCustomCell alloc]init]; 

    MyCustomCell.cellImage = [arrayImages objectAtIndex:indexPath.row]; 

    for (UIView *view in views) 
    { 
     if([view isKindOfClass:[UITableViewCell class]]) 
     {     
      cell = (MyCustomCell *)view; 

     } 
    } 
} 

und ich konnte nicht verstehen, wie diese spezifischen Teil funktioniert: cell = (MyCustomCell *)view;

Ich wollte es für meine zuvor erstelltes ändern Instanz von MyCustomCell (customCell) ... Wie könnte ich das tun?

Antwort

1

Manchmal Benutzer erstellen eine benutzerdefinierte UITableViewCell mit Interface Builder. Diese Person lädt gerade ihre benutzerdefinierte Unterklasse UITableViewCell und weist sie der Zelle zu. Die Linie: cell = (MyCustomCell *)view; vermutlich funktioniert, weil MyCustomCell eine Unterklasse von UITableViewCell ist.

Dies ist nur eine andere Technik zum Erstellen benutzerdefinierter Zellen, manchmal sehen Sie eine ähnliche Sache mit Tags.

0

Zuerst wird über eine Sammlung von UIView s oder UIView Unterklassen iteriert. Es speichert die Variable jeder Iteration in einem Zeiger namens view.

Es wird dann einfach die aktuelle view Variable auf einen Typ von MyCustomCell umgewandelt. Vermutlich MyCustomCell erweitert UIView, so ist dies legal.

Dies ist nützlich, wenn Sie spezifische Methoden zu MyCustomCell verwenden möchten, da Xcode nicht weiß, dass sie existieren, wenn Sie nicht explizit Type Cast Ihr Objekt.

+0

Und wie könnte ich es stattdessen auf einen Typ meiner Instanz von MyCustomCell umwandeln? –

+0

@Lucase Pereira: Ich bin mir nicht sicher, ob ich dir folge. Im Moment wird "Zelle" nach "MyCustomCell" übertragen, wenn es sich tatsächlich um eine Instanz von "MyCustomCell" handelt. – Josh

Verwandte Themen