2012-05-27 18 views
22

के लिए viewDidAppear मैं आम तौर पर दिखाई देने के बाद दृश्य पर कुछ यूआई सामान करने के लिए viewDidAppear विधि का उपयोग करता हूं और मैंने विभिन्न स्थितियों में इस विधि का उपयोग किया था, हालांकि यह बहुत उपयोगी था, हालांकि, मुझे UITableViewCell पर कुछ यूआई परिवर्तन करने की आवश्यकता है यह दिखना समाप्त हो गया, क्या एसडीके में कोई उपलब्ध तरीका है जो viewDidAppear जैसी समान नौकरी करता है लेकिन UITableViewCell के लिए?UITableViewCell

पेज। willDisplayCell मेरे मामले में काम नहीं किया है, मुझे वास्तव में didDisplayCell की तरह कुछ चाहिए यदि यह वास्तव में मौजूद है।

+0

क्या आप कुछ कोड का उपयोग कर रहे हैं जो आप उपयोग कर रहे हैं .. और आप क्या हासिल करने की कोशिश कर रहे हैं ... आईई यूआई समझ में आता है कि किस प्रकार के बदलाव .. क्या आप कृपया थोड़ा और बता सकते हैं .. –

+0

इस उत्तर को देखें इस प्रश्न का: * जब UITableView ने डेटा मांगना समाप्त कर दिया है तो अधिसूचित हो जाएं? * http://stackoverflow.com/a/3060232/1028709 –

+0

कारण है कि आप सीधे अपने टेबल सेल सबक्लास के लिए चीजों को नहीं कर सकते हैं? और क्यों आपके लिए 'डिस्प्लेसेल' काम नहीं करेगा? –

उत्तर

2

विधि viewDidLoad UIViewController और इसके उप-वर्गों से संबंधित है, इसलिए हम इसका उपयोग UITableViewCell में नहीं कर सकते, जो एक UIView सबक्लास है। मेरे ऐप में इस्तेमाल किया जाने वाला समाधान UITableViewCell की layoutSubViews विधि को ओवरराइड करना है, और मैंने कुछ समय के लिए कार्रवाई में देरी की है।

- (void)layoutSubViews 
{ 
    [super layoutSubviews]; 

    [self performSelector:@selector(myMethod) withObject:nil afterDelay:1.0]; 
} 
+16

आपकी यूआई कॉन्फ़िगरेशन में देरी का उपयोग कर? मुझे भयानक अभ्यास की तरह लगता है? – tommybananas

+0

वास्तव में भयानक अभ्यास। –

+0

जरूरी नहीं है। यदि वह UIScrollView के प्रदर्शन प्रभाव को कम करने की तलाश में है तो यह एक संभावित समाधान हो सकता है। – thedeveloper3124

9

आप सेल के फ्रेम करने के लिए परिवर्तनों का जवाब और लेआउट समायोजित करने की आवश्यकता है, तो आप सेल कक्षा में -layoutSubviews को लागू करने की जरूरत है। [super layoutSubviews] पर कॉल करना याद रखें।

+1

लेआउटसब्यूव्यू के साथ समस्या यह है कि जब सेल को हटाया जाता है तो इसे हमेशा बुलाया जाता है। यदि आपको सेल को पहली बार सेटअप करने के बाद केवल फ्रेम परिवर्तन करने की आवश्यकता है तो आप इसे जागृत कर सकते हैं FromNib। इसके साथ मुद्दा यह है कि आप सेल में समायोजित सीमाएं वहां से ऑटोलायआउट से नहीं प्राप्त कर सकते हैं, केवल लेआउटस्यूव्यूज़ में। – thedeveloper3124

16

UITableViewDelegate इन कार्य करता है:

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) 

func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) 

सेल में ही इस बात के लिए कॉलबैक जरूरत नहीं है।

+0

सही जवाब! – Fattie