Wie kann ich das Zubehör Offenlegung Bild in einem UITableViewCell anpassen?
-
03-07-2019 - |
Frage
Ich möchte eine benutzerdefinierte Version des Standard-Offenlegung Zubehör Bild verwenden in meinem UITableView. Wie kann ich das machen? Ich hoffe, dass Sub-Klassierung UITableViewCell für etwas, das nicht notwendig ist, diese einfach.
Lösung
Sie müssen eine benutzerdefinierte Ansicht erstellen und an die accessoryView
Eigenschaft des UITableViewCell
Objekt zuweisen. So etwas wie:
myCell.accessoryView = [[ UIImageView alloc ]
initWithImage:[UIImage imageNamed:@"Something" ]];
Andere Tipps
- (UITableViewCell *)tableView:(UITableView *)tView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UIImage *indicatorImage = [UIImage imageNamed:@"Arrow.png"];
cell.accessoryView =[[[UIImageView alloc] initWithImage:indicatorImage] autorelease];
return cell;
}
Nun, ich tue dies mit Hilfe Code oben angegebenen
Ich lief in das gleiche Problem wie Greg - das Zubehör Ansicht verfolgt nicht (wenn Sie eine UIImageView verwenden)
Ich löste es wie folgt aus:
UIImage * image = [ UIImage imageNamed:@"disclosure-button-grey.png" ] ;
UIControl * c = [ [ UIControl alloc ] initWithFrame:(CGRect){ CGPointZero, image.size } ] ;
c.layer.contents = (id)image.CGImage ;
[ c addTarget:self action:@selector( accessoryTapped: ) forControlEvents:UIControlEventTouchUpInside ] ;
cell.accessoryView = c ;
[ c release ] ;
Es gibt eine schönes Beispiel von Apple das zeigt, wie UIControl
verwenden, um diese Art von accessoryView Anpassung zu erfüllen.
Übergeordnete - (void)drawRect:(CGRect)rect
in UIControl ist nicht die einfachste Art und Weise, sondern gibt Ihnen viel Flexibilität Stil schönes Accessoire Aussicht.
Ich würde es tun, wie folgt:
UIImageView *chevronImgVw = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"chevron_accessory_vw_img.png"]];
chevronImgVw.frame = CGRectMake(cell.accessoryView.frame.origin.x, cell.accessoryView.frame.origin.y, 10, 20);
cell.accessoryView = chevronImgVw;
Bitte, versuchen Sie dies, bevor Sie unten Stimme! Denn im Moment ist es verfügt über 2 upvotes und 2 downvotes!
habe ich versucht, den obigen Code und es scheint nicht mehr zu funktionieren, vielleicht aufgrund des Alters dieses Beitrags so werde ich meine Linie werfen, die mir die maßgeschneiderte Zubehör Ansicht gab.
[cell setAccessoryView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrowBtn"]]];
Hope jemand findet dies nützlich.
Hinweis: keine benutzerdefinierte Zelle gesetzt markieren: 0 gewonnen. Der Tag wird für die textlabel Ansicht vorbehalten. Wenn Sie Tags in Xcode Storyboard gesetzt, Sie müssen eingestellt Tags für benutzerdefinierte Ansichten / Etiketten auf 1 oder höher.
Hinweis Apples Beispiel:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath (NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];
UILabel *label;
label = (UILabel *)[cell viewWithTag:1];
label.text = [NSString stringWithFormat:@"%d", indexPath.row];
label = (UILabel *)[cell viewWithTag:2];
label.text = [NSString stringWithFormat:@"%d", NUMBER_OF_ROWS - indexPath.row];
return cell;
}