UISegmentedControl innerhalb einer UITableViewCell - segmentierte Steuern verschwindet, wenn die Tabelle neu geladen

Ich habe das forum durchsucht, habe aber nichts gefunden das funktioniert für meine situation. Ich bin noch neu in diesem, so ist es wahrscheinlich etwas einfacher, aber ich kann nicht scheinen, um es herauszufinden.

Habe ich ein UITableViewController, hat mehrere Abschnitte. Ich habe erstellt eine benutzerdefinierte Klasse genannt SSSDataEntryCell, die ermöglicht es dem Benutzer, um text einzugeben. Jedoch, in einer der Zellen, die will ich ersetzen Sie es mit einem UISegmentedControl. Der code funktioniert die erste Zeit die Tabelle angezeigt wird (die Steuerung erscheint, kann ich wählen Sie ein segment und der Wert verändert sich), aber auf jede Art von reload-Ereignis (rotieren, scrollen, wo die Zelle ist nicht sichtbar, etc.), die segmented-control nicht mehr angezeigt wird.

Muss ich wieder den segmentierten Kontrolle, jedes mal? Das scheint ineffizient, vor allem, da es sich um ein ivar. Ich habe versucht, die Freigabe der Untersicht der Zelle vor der Zugabe und eine Reihe anderer Vorschläge auf stackoverflow, aber nichts scheint zu beheben. Vielen Dank im Voraus!

Hier ist der relevante Teil meiner .h

@interface SSSEditDetailViewController : UITableViewController <UITextFieldDelegate>
{
    //lets us set the sex (male, female)
    UISegmentedControl *sexSwitch;
}

Hier ist der relevante Teil der .m

- (void)viewDidLoad
{
    [super viewDidLoad];

    //Load the NIB file for our custom cell
    UINib *nib = [UINib nibWithNibName:@"SSSDataEntryTableCell" bundle:nil] ;

    //Register the NIB which contains the cell
    [[self tableView] registerNib:nib forCellReuseIdentifier:@"SSSDataEntryTableCell"] ;

    //
    //set up the sex switch if needed
    //
    if ( sexSwitch == nil )
    {
        NSArray *values = [[NSArray alloc] initWithObjects:kSSSMale, kSSSFemale, nil] ;
        sexSwitch = [[UISegmentedControl alloc] initWithItems:values] ;
        [sexSwitch addTarget:self action:@selector(changeSex:)  
                  forControlEvents:UIControlEventValueChanged] ;
        [sexSwitch setSegmentedControlStyle:UISegmentedControlStyleBar] ;
    }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    SSSDataEntryTableCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SSSDataEntryTableCell"] ;

    if ( [indexPath section] == 0 )
    {
        [[cell dataField] setDelegate:self] ;
        [[cell dataField] setOurPath:indexPath] ;

        [[cell dataField] setText:[person name]] ;
        [[cell dataField] setPlaceholder:@"Name"] ;
    }
    else if ( [indexPath section] == 1 )
    {
        //Sex switch;
        [cell setAccessoryType:UITableViewCellAccessoryNone] ;

        //get cell frame and put the sex switch in its place
        [sexSwitch setFrame:[cell frame]] ;
        [sexSwitch setAutoresizingMask:UIViewAutoresizingFlexibleWidth] ;

        [[cell contentView] addSubview:sexSwitch] ;
    }

    return cell ;
}

InformationsquelleAutor Dan Nichols | 2013-06-02

Schreibe einen Kommentar