2008-12-31 2 views
48

मैं अपने UITableView में मानक प्रकटीकरण एक्सेसरी छवि का एक कस्टम संस्करण उपयोग करना चाहता हूं। मैं यह कैसे कर सकता हूँ? मुझे उम्मीद है कि उप-वर्गीकरण UITableViewCell इस मूलभूत चीज़ के लिए आवश्यक नहीं है।मैं UITableViewCell में सहायक प्रकटीकरण छवि को कैसे अनुकूलित कर सकता हूं?

उत्तर

113

आपको कस्टम दृश्य बनाना होगा और इसे UITableViewCell ऑब्जेक्ट की संपत्ति असाइन करना होगा। कुछ की तरह:

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

मैं ऐसा करते हैं, मैं नोटिस कि UITableViewDelegate विधि - [tableView: accessoryButtonTappedForRowWithIndexPath:] द्वारा अब कहा जाता हो जाता है। क्या यह अपेक्षित व्यवहार है? क्या इस विधि को काम करने का कोई तरीका है? –

+0

http://stackoverflow.com/questions/869421/using-a-custom-image-for-a-uitableviewcells-accessoryview-and-having-it-respond – jarnoan

+0

पर कुछ और स्पष्टीकरण है UIpperance का उपयोग करके इसे करना संभव है UITableViewCell पर प्रॉक्सी? – Claus

7

मैं ग्रेग के रूप में एक ही समस्या में भाग - गौण दृश्य को ट्रैक नहीं करता

(यदि आप एक UIImageView का उपयोग करें) मैं इसे इस तरह हल:

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

परत सामग्री के साथ झुकाव की बजाय, छवि के साथ एक साधारण UIButton का उपयोग क्यों न करें? –

+0

मुझे लगता है कि मैंने कोशिश की होगी और यह किसी कारण से काम नहीं करता है? लेकिन निश्चित रूप से, पहले UIButton के साथ प्रयास करें ... – nielsbot

+0

कस्टम छवि का उपयोग करते समय, स्थान बदल सकता है, और उपयोगकर्ता को उस पर क्लिक करने में समस्या हो सकती है क्योंकि इसकी फ्रेम छोटी हो सकती है। सबसे अच्छा एक्सेसरी व्यू के ऊपर एक सबव्यू बटन जोड़ना होगा, इस तरह आप आकार और स्थान को संभाल सकते हैं। – david72

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

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


    return cell; 
} 

अच्छी तरह से मैं ऊपर

-2

नोट दिए गए मदद कोड के साथ ऐसा कर: टैग करने के लिए एक कस्टम सेल निर्धारित नहीं करते हैं: 0। वह टैग टेक्स्ट लेबल दृश्य के लिए आरक्षित है। यदि आप एक्सकोड स्टोरीबोर्ड में टैग सेट करते हैं, आपको कस्टम दृश्य/लेबल के लिए टैग 1 या उच्चतम पर सेट करना होगा।

नोट एप्पल के उदाहरण:

- (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

मैं यह कर चाहते हैं इस प्रकार है:

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; 

कृपया, इससे पहले कि आप नीचे वोट इस बाहर की कोशिश करो! क्योंकि इस समय इसमें 2 अपवॉट्स और 2 डाउनवॉट्स हैं!

-1

मैंने उपर्युक्त कोड की कोशिश की और ऐसा लगता है कि शायद इस पोस्ट की उम्र के कारण मैं अपनी लाइन को फेंक दूंगा जिसने मुझे अनुकूलित एक्सेसरी व्यू दिया है।

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

आशा है कि किसी को यह उपयोगी लगेगा।

+2

टॉम, इस प्रविष्टि पर स्वीकृत उत्तर बिल्कुल वही बात है। मुझे यहां क्या समझ नहीं आ रहा है? – jpm

0

nice example from Apple है जो इस तरह के सहायक को देखने के लिए UIControl का उपयोग करने का तरीका दिखाता है।

UIControl में - (void)drawRect:(CGRect)rect ओवरराइड करना सबसे आसान तरीका नहीं है, लेकिन आपको अच्छी सहायक दृश्य शैली के लिए बहुत लचीलापन देता है।

enter image description here