Mehrere benutzerdefinierte Zellen werden dynamisch in eine einzelne Tabellenansicht geladen

Ich habe ein Problem mit einem Teil meines Codes. Ich bin mir ziemlich sicher, dass es eine sehr einfache Lösung gibt, ich kann es einfach nicht sehen! Grundsätzlich verwende ich eine einzelne Tableview-Klasse, um verschiedene Daten (Inhalte, Elemente, Bewegungen) anzuzeigen. Anstatt 3 verschiedene Table View Controller zu haben, habe ich einen, der verfolgt, welche Zelle getippt wird und die relevanten Daten anzeigt. Alles funktioniert wirklich gut! Ich verwende benutzerdefinierte Zellklassen mit einer separaten NIB-Datei. Daher muss ich eine if-Anweisung (oder eine switch-Anweisung) implementieren, die überprüft, auf welche Zelle getappt wurde (self.title), und dann die benutzerdefinierte Zelle basierend darauf erstellen.

Offensichtlich habe ich ein Problem mit dem Gültigkeitsbereich. Cell.imageView hat keine Ahnung, auf was es verweist, da es außerhalb des Gültigkeitsbereichs liegt, wenn es in einer if-Anweisung steht.

Ich habe versucht mit

id cell;

Ich bekomme die gleichen Fehler. Wie kann ich das erreichen, damit jeder "Titel" eine andere benutzerdefinierte Zelle verwendet?

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

            static NSString *CellIdentifier = @"Cell";


            if (title == @"Content" || title == @"Favorite Content")
            {
                ContentCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

                if (cell == nil) {
                    NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@"ContentCell" owner:self options:nil];

                    for (id currentObject in objects) {
                        if ([currentObject isKindOfClass:[UITableViewCell class]]) {
                            cell = (ContentCell *)currentObject;

                            break;
                        }
                    }
                }

            }
            else if (title == @"Items" || title == @"Favorite Items")
            {
                ItemCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

                if (cell == nil) {
                    NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@"ItemCell" owner:self options:nil];

                    for (id currentObject in objects) {
                        if ([currentObject isKindOfClass:[UITableViewCell class]]) {
                            cell = (ItemCell *)currentObject;

                            break;
                        }
                    }
                }

            }
            else if (title == @"Moves" || title == @"Favorite Moves")
            {
                MoveCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

                if (cell == nil) {
                    NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@"MoveCell" owner:self options:nil];

                    for (id currentObject in objects) {
                        if ([currentObject isKindOfClass:[UITableViewCell class]]) {
                            cell = (MoveCell *)currentObject;

                            break;
                        }
                    }
                }

            }

            cell.imageView.image = [UIImage imageNamed:[[self.theData objectAtIndex:indexPath.row] objectForKey:@"image"]];
            cell.contentName.text = [[self.theData objectAtIndex:indexPath.row] objectForKey:@"name"];

            return cell;

    }

Jede Hilfe wäre toll! Ich bin sicher, dass meine stundenlangen Blicke auf den Bildschirm dazu geführt haben, dass ich etwas Einfaches verpasst habe. Vielen Dank!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage