• Wieder einmal haben uns unsere Apfeltalker tolle Fotos zur Abstimmung eingesandt. Welches ist Euer Favorit? Stimmt mit ab! Hier geht es zur Abstimmung --> Klick
  • Es ist bereits Apfeltalk-Tradition und wir möchten sie auch in diesem Jahr fortsetzen: Unser Apfeltalk-Weihnachtslogo-Wettbewerb hat begonnen! Gestaltet für uns das Weihnachtsbanner, das im Monat Dezember bis zum Weihnachtsfest unsere Webseite schmücken soll. Lasst Eurer Kreativität freien Lauf! Hier geht es zum Wettbewerb --> Klick

custom tableviewCell

rooti

Golden Delicious
Registriert
13.10.09
Beiträge
6
im Anhang habe ich einen Screenshot aus den Einstellungen meines App. Nun möchte ich im App quasi genau das selbe realisieren - nur weiß ich nicht genau wie das gehen soll.
Ein Standartdesign für eine Zelle mit einem Label und einem Textfeld habe ich nicht gefunden.. also dachte ich, dass ich eine eigene Zelle gestalten muss..

nur das hat auch nicht geklappt (gab Probleme beim Einbinden des Nib).

aktuell versuche ich es mit einer abgewandelten Form des Sample-Codes von Apple... aber dabei bekomme ich das Custom-Cell nicht passend in den TableView:

Code:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
	
    static NSString *CellIdentifier = @"ImageOnRightCell";
	
    UILabel *mainLabel, *secondLabel;
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
		
        mainLabel = [[[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 220.0, 18.0)] autorelease];
        mainLabel.font = [UIFont systemFontOfSize:18.0];
        mainLabel.textAlignment = UITextAlignmentLeft;
        mainLabel.textColor = [UIColor blackColor];
        mainLabel.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleHeight;
        [cell.contentView addSubview:mainLabel];
		
        secondLabel = [[[UILabel alloc] initWithFrame:CGRectMake(0.0, 20.0, 220.0, 25.0)] autorelease];
        secondLabel.font = [UIFont systemFontOfSize:12.0];
        secondLabel.textAlignment = UITextAlignmentRight;
        secondLabel.textColor = [UIColor darkGrayColor];
        secondLabel.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleHeight;
        [cell.contentView addSubview:secondLabel];
    }
    mainLabel.text = @"Test";
    secondLabel.text = @"Test klein";
	
    return cell;
}
(bei dem Code sind es noch 2 Label - aber es geht mir eher auch allgemein um die Position)

kann mir da wer weiterhelfen?
 

Anhänge

  • Bildschirmfoto 2010-07-05 um 11.40.52.png
    Bildschirmfoto 2010-07-05 um 11.40.52.png
    15,4 KB · Aufrufe: 233
habe das optische nun inzwischen:
Code:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
	
    static NSString *CellIdentifier = @"ImageOnRightCell";
	
    UILabel *mainLabel;
	UITextField *ownTextField;
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
		
        mainLabel = [[[UILabel alloc] initWithFrame:CGRectMake(20, 13, 100.0, 18.0)] autorelease];
        mainLabel.font = [UIFont systemFontOfSize:13.0];
        mainLabel.textAlignment = UITextAlignmentLeft;
        mainLabel.textColor = [UIColor blackColor];
        mainLabel.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleHeight;
        [cell.contentView addSubview:mainLabel];
		
        ownTextField = [[[UITextField alloc] initWithFrame:CGRectMake(135
																	  , 13, 100.0, 25.0)] autorelease];
        ownTextField.font = [UIFont systemFontOfSize:12.0];
        ownTextField.textAlignment = UITextAlignmentLeft;
        ownTextField.textColor = [UIColor darkGrayColor];
        ownTextField.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleHeight;
        [cell.contentView addSubview:ownTextField];
    }
	switch (indexPath.row) {
		case 0:
			mainLabel.text = @"Login Name";
			break;
		case 1:
			mainLabel.text = @"Login password";
			break;
		default:
			break;
	}
	
    return cell;
}

neue Frage ist aufgetaucht: wie kann ich nun die im "ownTextField" eingegebenen Daten empfangen? - normalerweise würde ich das ja mit einem Outlet machen, das im IB verbunden wird... nur da taucht es jetzt (dank codelösung) ja nicht auf..

und es sieht so aus, als ob das UITextFieldDelegate sich nicht angesprochen fühlt...
 
Am besten ist es, wenn du eine eigene Unterklasse von UICellView machst. Du kannst dir im IB ein schönes GUI dafür zusammenklicken. Das laden des views machst du am besten im Konstruktor der CellView:

Code:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
        NSArray* nibObjects = [[NSBundle mainBundle] loadNibNamed:@"TextfieldCellView" owner:nil options:nil];
        for(id nibOb in nibObjects)
        {
            if([nibOb isKindOfClass:[TextfieldCellView class]])
            {
                self = (TextfieldCellView*)nibOb;
            }
        }
    }
    
    return self;
}