Frage

Ich habe einen gruppierten Tableview, die mit XML-Daten in einem Abschnitt gefüllt wird. Was würde Ich mag es, einen weiteren Abschnitt tun erstellen, bevor die Daten einer angetriebenen und anzuwenden, um eine Aktion zu.

Beispiel:

Der Benutzer mit einem Knopf präsentiert wird, die „Ihre aktuelle Position“ (manuell erstellt Abschnitt) sagt, und darunter eine Liste der Länder ist, kann der Benutzer alternativ wählt Auswahl (data driven Abschnitt)

Verwenden Sie das Einstellungsmenü als Leitfaden. Es gibt einige Optionen, die eine einzelne Zeile in einem Abschnitt sind, so dass sie eine Taste ...

zu sein scheinen

Wenn dies keinen Sinn macht, werde ich versuchen, es besser zu erklären.


Also ich habe diese beiden offensichtlich Zeilen Code ... einfach genug

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}    
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        return [countrysData count];
    }

Was würde Ich mag ist numberOfSectionsInTableView Rückkehr 2 haben und haben die erste „Section“ sagen „Klicken Sie auf Ihrem aktuellen Standort verwenden“, die dann in den Blick Karte schieben würde, und der zweite Abschnitt Anzeige die Liste der Länder, die derzeit Ich habe Arbeits.

War es hilfreich?

Lösung

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if(section == 0){
        return 1;
    }else{
        return [countrysData count];
    }
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 2;
}   

, dann sollten Sie wählen, was in Ihrem DidSelectRowAtIndexPath zu tun: Methode aufgrund der indexPath.section. oh, und Sie sollten indexPath.section in Ihrem cellForRowAtIndexPath überprüfen: Methode.

Andere Tipps

Sie müssen nur alle Ihre Implementierungen der UITableViewDataSource und UITableViewDelegate Protokolle in geeigneter Weise für den neuen Abschnitt Konto zu aktualisieren und die entsprechenden Zeile (n).

Zum Beispiel, hier ist, wie man update numberOfSectionsInTableView: , Tableview: numberOfRowsInSection: und Tableview: cellForRowAtIndexPath: , aber Sie zumindest aktualisieren möchten t ableView: DidSelectRowAtIndexPath: auch:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // calculate the number of sections of non-data (might just be 1)    
    // calculate the number of sections for the data (you were already doing this, might just be 1)
    // return the sum
    return 1 + 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    NSInteger rowCount = 0;
    switch (section) {
    case 0:
        // non-data section has 1 row/cell
        rowCount = 1;
        break;
    case 1:
        // data section uses an array
        rowCount = [dataArray count];
        break;
    }
    return rowCount;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *nonDataCellID = @"NonDataCell";
    static NSString *dataCellID = @"DataCell";
    UITableViewCell *cell;

    int section = [indexPath indexAtPosition:0];
    int row = [indexPath indexAtPosition:1];

    switch (section) {
        case 0:
            // or you can just use standard cells here
            cell = [tableView dequeueReusableCellWithIdentifier:nonDataCellID];
            if (cell == nil) {
                [[NSBundle mainBundle] loadNibNamed:@"NonDataCell" owner:self options:NULL];
                cell = nonDataCell; // nonDataCell is an IBOutlet to this custom cell
            }

            // configure non-data cell here (use tags)
            UILabel *someLabel = (UILabel*)[cell viewWithTag:1];
            someLabel.text = @"Non-data cell";
            break;

        case 1:
            // or you can just use standard cells here
            cell = [tableView dequeueReusableCellWithIdentifier:dataCellID];
            if (cell == nil) {
                [[NSBundle mainBundle] loadNibNamed:@"dataCell" owner:self options:NULL];
                cell = dataCell; // dataCell is an IBOutlet to this custom cell
            }

            // configure data call here (using "row")
            UILabel *someDataLabel = (UILabel*)[cell viewWithTag:1];
            someDataLabel.text = [[dataArray objectAtIndex:row] valueForKey:@"name"];
            break;
       }

    return cell;
}
‚NumberOfSectionsInTableView:‘ on the fly

Ich bin ziemlich sicher, können Sie die Rückgabe von UITableViewDataSource Methode ändern. Sobald der Benutzer die Wahl eines zusätzlichen Abschnitt, stellt nur einen Flag das Verfahren zu haben, die Anzahl der Tabellen zurückkehren Sie wollen. Dann zwingen Sie einen Reload der Tabelle und Sie sollten den neuen Abschnitt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top