2008-12-31 7 views

Antwort

113

Sie müssen eine benutzerdefinierte Ansicht erstellen und sie der accessoryView-Eigenschaft des Objekts UITableViewCell zuweisen. Etwas wie:

myCell.accessoryView = [[ UIImageView alloc ] 
         initWithImage:[UIImage imageNamed:@"Something" ]]; 
+7

Wenn ich das tue, merke ich, dass die UITableViewDelegate Methode - [Tableview: accessoryButtonTappedForRowWithIndexPath:] nicht mehr aufgerufen wird. Ist das erwartetes Verhalten? Gibt es eine Möglichkeit, diese Methode aufrechtzuerhalten? –

+0

Es gibt einige weitere Erklärungen unter http://stackoverflow.com/questions/869421/using-a-custom-image-for-a-uitableviewcells-accessoryview-and-having-it-respid – jarnoan

+0

ist es möglich, es mit UIAppearance zu tun Proxy auf UITableViewCell? – Claus

7

Ich lief in das gleiche Problem wie Greg - das Zubehör Ansicht verfolgen nicht (wenn Sie eine UIImageView verwenden)

ich es wie folgt gelöst:

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 ] ; 
+1

Warum nicht einfach ein einfaches UIButton mit einem Bild verwenden, anstatt mit Layerinhalten herumzuhantieren? –

+0

Ich habe das Gefühl, dass ich das versucht habe und es aus irgendeinem Grund nicht funktioniert hat? Aber sicher, versuchen Sie mit UIButton zuerst ... – nielsbot

+0

Wenn Sie ein benutzerdefiniertes Bild verwenden, kann sich der Standort ändern, und Benutzer haben möglicherweise Probleme beim Klicken, da der Rahmen möglicherweise klein ist. Am besten wäre es, über der Zubehöransicht eine Subview-Schaltfläche hinzuzufügen, so dass Sie Größe und Position verwalten können. – david72

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

    UIImage *indicatorImage = [UIImage imageNamed:@"Arrow.png"]; 
    cell.accessoryView =[[[UIImageView alloc] initWithImage:indicatorImage] autorelease]; 


    return cell; 
} 

gut ich tun dies mit dem Code Hilfe gegeben oben

-2

HINWEIS: Stellen Sie eine benutzerdefinierte Zelle zu markieren: 0 gewonnen. Dieses Tag ist für die textLabel-Ansicht reserviert. Wenn Sie Tags in Xcode Storyboard, , setzen, müssen Sie die Tags für benutzerdefinierte Ansichten/Labels auf 1 oder höher setzen.

Hinweis Apple 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; 
} 
0

ich es tun würde, 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 dieses, bevor Sie versuchen, nach unten Stimme! Weil es im Moment 2 upvotes und 2 downvotes gibt!

-1

Ich habe versucht, den oben genannten 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öransicht gab.

[cell setAccessoryView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrowBtn"]]]; 

Hoffe jemand findet das nützlich.

+2

Tom, die akzeptierte Antwort auf diesen Eintrag ist genau das Gleiche. Was fehlt mir hier? – jpm

0

Es gibt eine nice example from Apple, die zeigt, wie man UIControl verwendet, um diese Art von AccessoryView-Anpassung zu erfüllen.

Das Überschreiben - (void)drawRect:(CGRect)rect in UIControl ist nicht der einfachste Weg, aber gibt Ihnen viel Flexibilität, um schöne Zubehöransichten zu gestalten.

enter image description here

Verwandte Themen