2012-02-27 10 views
7

मेरे पास एक मोनो टच आईफोन ऐप है जिसमें UITableViewController है क्योंकि यह मुख्य दृश्य नियंत्रक है।मोनो टच - UITableView स्क्रॉलिंग का पता लगाएं

मैं जब tableview कोड के साथ स्क्रॉल किया जा रहा है पता लगाने के लिए कोशिश कर रहा हूँ:

this.TableView.Scrolled += TableViewScrolled; 

जहां TableViewScrolled(object sender, EventArgs e) { } मेरी विधि बुलाया जा रहा है। लेकिन यह किसी कारण से TableViewScrolled() पर कॉल करने में विफल रहता है।

क्या किसी के पास इसका कोई अनुभव है?

उत्तर

6

@ पर करुमेलूर की टिप्पणी पिछला जवाब एक बहुत अच्छा मुद्दा बनाता है और आईएमओ एक जवाब होना चाहिए (एक टिप्पणी नहीं)।

बिंदु यह है कि यदि आप Delegate (या WeakDelegate) को अपने UITableView पर सेट करते हैं तो यह ईवेंट अब और काम नहीं करेगा।

क्यों? उन घटनाओं को लागू करने के लिए मोनो टच UIScrollView (UITableView के माता-पिता) के लिए अपना आंतरिक प्रतिनिधि प्रकार बनाता है, जहां यह विधियों (प्रतिनिधि के) को ओवरराइड करता है और उन्हें प्राकृतिक (.NET में) के रूप में प्रकट करता है, प्रकार के अंदर की घटनाएं ।

इसका प्रभावी अर्थ यह है कि आप उन UITableView ईवेंटों को अपने स्वयं के प्रतिनिधि UITableViewDelegate प्रकार (बाद में पूर्व में ओवरराइड करेंगे) के साथ मिश्रित नहीं कर सकते हैं।

3

इस दस्तावेज़ पढ़ें: UIScrollViewDelegate

आप उपयोग कर सकते हैं:

- (void) scrollViewDidScroll:(UIScrollView *)scrollView { 


} 

या

- (void) scrollViewWillBeginDragging:(UIScrollView *)scrollView { 


} 

गुड लक, नाथन

+1

वे विधियां हैं जिन्हें मोनो टच में UITableView में मैप किया गया है। स्क्रॉल किया गया; यही कारण था कि मैं यह सोच रहा था। TableView.Scrolled + = TableViewScrolled; चाल करना चाहिए लेकिन नहीं जाना। :-) – Brett

+3

क्या आप प्रतिनिधि का उपयोग कर रहे हैं? यदि आप करते हैं, तो कॉलबैक काम नहीं करते हैं। यदि आप कॉलबैक का उपयोग करते हैं, तो प्रतिनिधि काम नहीं करता है। यह या तो है या। – Krumelur

+1

@ नाथन यह ज़ैमरिन के बारे में एक सवाल है, जहां इसे स्क्रॉल() कहा जाता है। –

13

मेरा जवाब वास्तव में केवल नहीं स्क्रॉल के बारे में है, लेकिन तथ्य यह है कि मैं काफी एक घंटे खर्च किया है स्क्रॉल घटना की वजह से एक समस्या के साथ लड़ की वजह से है, मैं यहाँ का जवाब लिखने का फैसला किया है।

this.myTableView.Scrolled += (sender, args) => 
    { 
     ... 
    }; 

UITableViewDataSource वर्ग से विरासत में मिली की मेरी ओवरराइड तरीके::

public override UIView GetViewForHeader(UITableView tableView, int section) 
    public override float GetHeightForRow(UITableView tableView, NSIndexPath indexPath) 

काम करना बंद कर (नहीं बुलाया जाने लगा)

तो, मेरे लिए समस्या यह है कि की सदस्यता के बाद किया गया था। जो ... स्पष्ट रूप से, बहुत अप्रत्याशित था!

तो, मैं तो बस एक ही डेटा स्रोत प्रतिनिधि बजाय सदस्यता लेने तालिका दृश्य पर घटना विद्यमान के में

public override void Scrolled(UIScrollView scrollView) 

ओवरराइड करने के लिए किया था।

मुझे आशा है कि कोई ऐसी परेशानी में नहीं आएगा!

+0

आपकी सलाह के लिए धन्यवाद! – DeeRain

+0

हाय मुझे डायलॉग व्यू कंट्रोलर (मोनोटच एमटीडी से) के साथ एक ही तरह की समस्या है। मेरे मामले में, जैसे ही मैं स्क्रॉल किए गए ईवेंट को संभालना शुरू करता हूं, मेरी कोशिकाओं पर सभी टैप किए गए ईवेंट काम करना बंद कर देते हैं। चूंकि UITableViewDataSource ढांचे द्वारा गतिशील रूप से बनाया गया है, क्या आप जानते हैं कि मैं ईवेंट को संभालने के बजाय स्क्रॉल किए गए विधि को कैसे ओवरराइड कर सकता हूं। –

+0

अपने डेटासेट को कार्यान्वित करने (ओवरराइडिंग) के बारे में क्या है? एक और विकल्प विंडो वर्ग से सीधे सभी घटनाओं को संभालना है (यदि आवश्यक हो)। – Agat

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