2010-04-13 20 views
5

के अंदर गायब हो जाता है मेरे पास एक टेबल है, मेरे पास cellForRowAtIndexPath प्रतिनिधि है और मेरे पास उस विधि के अंदर UITableViewCell बनाया गया है, जो मैं लौटाता हूं। CellForRowAtIndexPath में कहीं भी मैं उस सेल के सेल.contentView को UIButton जोड़ता हूं। यह सब ठीक काम करता है, जब तक कि मैं उस सेल को उस बटन के साथ नहीं चुनता। सेल नीले रंग में रंग बदलता है (जो ठीक है), यूबूटटन भी इसका रंग नीले रंग में बदल देता है। अब, अगर मैं चयनित सेल के अंदर उस UIButton पर क्लिक करता हूं, तो यह गायब हो जाता है! वाह, यह अजीब है, मैं इसे कैसे ठीक कर सकता हूं? मैं चयनित सेल के अंदर UIButton चाहता हूं, जब मैं इसे क्लिक करता हूं।चयनित UIButton चयनित UITableViewCell

संपादित करें: शामिल मेरी cellForRowAtIndexPath कार्यान्वयन

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


    for (UIView *view in cell.contentView.subviews) 
     [view removeFromSuperview]; 


    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero 
       reuseIdentifier: sectionsTableIdentifier] autorelease]; 

    } 

    CGRect newIconRect = CGRectMake(276, 40, 29, 29); 
     UIButton *newIcon = [[UIButton alloc] initWithFrame:newIconRect]; 
     [newIcon setImage:[UIImage imageNamed:@"mynewicon.png"] forState:UIControlStateNormal]; 
     [cell.contentView addSubview:newIcon]; 
     [newIcon release]; 


    return cell; 

    } 
+1

क्या हम आपके 'cellForRowAtIndexPath' विधि की सामग्री देख सकते हैं? 'tableView: didSelectRowAtIndexPath: यदि आप इसे लागू कर चुके हैं तो भी सहायक होगा। – Tim

+0

हां, मैंने इसे संपादित में शामिल किया है, और मैंने नहीं किया है सिलेक्टरोएट इंडेक्सपैथ लागू किया गया है, केवल सेलफॉररोएट इंडेक्सपैथ – Mike

+0

जब आप कहते हैं कि बटन "गायब हो जाता है", क्या यह छिपा हुआ है, या क्या यह वास्तव में अस्तित्व में है? क्या बटन के क्लिक हैंडलर को कॉल किया जाता है यदि आप उस क्षेत्र को दबाते हैं जहां यह होना चाहिए? –

उत्तर

6

मैं 4.0 बीटा जहाँ मैं setImage के साथ एक UITableViewCell में एक UIButton था ओएस पर एक समान मुद्दा देखा। जब पंक्ति एक पंक्ति चुनने और एक और तालिका दृश्य को धक्का देने के बाद मैं तालिका दृश्य पर वापस आऊंगा तो बटन गायब हो जाएगा। इस पर काबू पाने के लिए, मैंने इमेज सेट किया: फॉरस्टेट: यूआईसींट्रोलस्टेट छवि पर भी प्रकाश डाला गया। मुझे यकीन नहीं है कि यह आपके विशेष मुद्दे को हल करेगा, लेकिन यह मेरे लिए किया गया था। मुझे लगता है कि बटन भी सेट किया गया है। हाइलाइट किया गया = NO में किया गया चयन करेंटएट इंडेक्सपैथ: शायद काम भी कर सकता है, लेकिन मैंने कोशिश नहीं की।

+1

मुझे अभी भी यह दिखाई देता है आईओएस 4.3 में मुद्दा। यह कामकाज अभी भी काम करता प्रतीत होता है। – titaniumdecoy

2

ऐसा लगता है कि किसी भी तरह बटन अपने पर प्रकाश डाला राज्य के रूप में चयनित राज्य विरासत में है। किसी को भी इसका समाधान मिल रहा है?

समाधान: मैं इस हैक के बारे में बिल्कुल खुश नहीं हूं लेकिन यह मेरे उद्देश्यों के लिए काम करता है। असल में, मैं चाहता हूं कि बटन केवल तभी दिखाई दे जब सेल चुना जाता है। UITableViewCell को उपclass और इन ओवरराइड जोड़ें (संपादित करें बटन बटन उदाहरण है जो सेल की सामग्री में जोड़ा गया था init में देखें)। forState: UIControlStateNormal

- (void)setSelected:(BOOL)selected animated:(BOOL)animated { 
    editButton.hidden = YES; 

    [super setSelected: selected 
       animated: animated]; 

    editButton.highlighted = NO; 

    if (selected) 
     [editButton performSelector: @selector(setHidden:) 
         withObject: nil 
         afterDelay: 0.2]; 
} 

- (void)setSelected:(BOOL)selected { 
    editButton.hidden = YES; 

    [super setSelected: selected]; 

    editButton.highlighted = NO; 

    if (selected) 
     [editButton performSelector: @selector(setHidden:) 
         withObject: nil 
         afterDelay: 0.2]; 
} 
2

अरे, मुझे पता है कि यह एक पुरानी पोस्ट है लेकिन यह सहायक हो सकती है: UITableView अपने उप-दृश्यों के पूरे पदानुक्रम में अपने चयन स्थिति को प्रचारित करने का प्रयास करेगा। यदि एक सबव्यू-हाइटलाइट करने का जवाब देता है: इसे सेल चयन स्थिति के अनुसार अपडेट किया जाएगा।

यह बताता है कि बटन नीला हो गया है (हाइलाइट किया गया है), लेकिन बटन छवि कभी-कभी क्यों गायब हो जाती है: यूआईबटन में अपनी छवियों को प्रदर्शित करने के लिए UIImageView उदाहरण होते हैं और प्रत्येक छवि दृश्य की छवि को अपने राज्य के अनुसार स्वैप कर देंगे (- [UIControl राज्य])। लेकिन तालिका दृश्य कक्ष आता है और बटन के छवि दृश्य के हाइलाइट किए गए ध्वज को YES (जिसे बटन पूर्ववत नहीं किया गया) पर सेट करता है, लेकिन इस छवि दृश्य में इसकी हाइलाइट की गई स्थिति के लिए कोई छवि नहीं है, इसलिए आप कुछ भी नहीं देखते हैं, भले ही बटन स्वैपिंग करता है छवियों के अनुसार छवियों।

जब भी सेल का चयन किया गया था या हाइलाइट किया गया था, तो मैंने बटन के छवि दृश्य के हाइलाइट किए गए ध्वज को NO पर सेट किया था।

2

मुझे इसके साथ-साथ (4.3 और उससे कम के लिए) परेशानी थी और उपरोक्त समाधान मेरे लिए काम नहीं करते थे। अंत में, सेटिंग बटन। एडजस्ट्स इमेजवेन हाइलाइटेड = नहीं; बटन बनाते समय मेरे लिए चाल थी।

0

चाल यूआईएममेज व्यू पर एक सबव्यूव के रूप में UIButton जोड़ने के लिए है।

  1. UIImage

    बनाएं
    UIImage backgroundImg = [UIImage imageName:@"yourimg"]; 
    UIImageView imageView = [UIImageView alloc]initWithImage:backgrounding]; 
    
  2. अब बटन बनाने

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    // set the frame. the position of the button is the center 
    CGRect newIconRect = CGRectMake(imageView.center.x, imageView.center.y, 29, 29); 
    
    button.frame = newIconRect; 
    
  3. अंत में UIImageView पर

    [imageView addSubview:button]; 
    [cell addSubview imageView]; 
    
01 बटन जोड़ने

अब आपको हाइलाइट रंग के साथ खेलना नहीं है।

संबंधित मुद्दे