2013-03-23 15 views
5

मुझे एक व्यू कंट्रोलर मिला है (इसे MainViewContoller पर कॉल करें) जो वर्तमान में 3 अलग-अलग टेबल (एक समय में एक) है, उपयोगकर्ता उन तालिकाओं के बीच स्विच करने के लिए सेगमेंट नियंत्रण टैप कर सकता है।स्टेटस बार टैप करते समय शीर्ष पर स्क्रॉल करें

उन 3 टेबलों को प्रस्तुत करने के लिए, MainViewContoller में 3 अन्य व्यू कंट्रोलर (ए, बी और सी) हैं, प्रत्येक में एक सबव्यूव के रूप में UITableView है और इसका अपना डेटा संभालता है।
जब एक MainViewContoller भरी हुई है, यह नियंत्रक ए, बी और सी आरंभ किया है, और उनके tableViews जोड़ने यह दृश्य है करने के लिए:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    ViewControllerA *vcA = [ViewControllerA alloc] init]; 
    [self.view addSubview:vcA.view]; 

    ViewControllerB *vcB = [ViewControllerB alloc] init]; 
    [self.view addSubview:vcB.view]; 

    ViewControllerC *vcC = [ViewControllerC alloc] init]; 
    [self.view addSubview:vcC.view]; 
} 

इसलिए उदाहरण के लिए उपयोगकर्ता खंड नियंत्रण, नल और एक चुनते हैं जब MainViewContoller छिपाने टेबल बी और सी, और इस तरह प्रकट करें तालिका ए कुछ:

if (userTapOnA) { 
    self.viewControllerA.tableView.hidden = NO; 
    self.viewControllerB.tableView.hidden = YES; 
    self.viewControllerC.tableView.hidden = YES; 
} 

समस्या:

उपयोगकर्ता स्थिति पट्टी मैं चाहता हूँ टैप करें कि वर्तमान दृश्य तालिका शीर्ष पर स्क्रॉल होगा।
यह व्यवहार बहुत बुनियादी है और नियमित दृश्य नियंत्रक का उपयोग करते समय इसे मुफ्त में मिलता है, लेकिन जैसा कि आप देख सकते हैं कि मेरा व्यू कंट्रोलर नियमित नहीं है।
मुझे लगता है कि अन्य नियंत्रकों का उपयोग करके MainViewContoller देखें, मैं डिफ़ॉल्ट व्यवहार तोड़ता हूं, इसलिए मेरा MainViewContoller स्टेटस बार टैप को संभाल नहीं करता है।

किसी को यह पता चला कि इसे कैसे हल किया जाए?

उत्तर

26

यह UIScrollView हेडर फाइल से सीधे है:

/* उपयोगकर्ता स्थिति पट्टी, स्पर्श नीचे स्क्रॉल दृश्य जो स्थिति पट्टी के सबसे करीब है शीर्ष पर स्क्रॉल किया जाएगा, टैप करता जब लेकिन केवल तभी यदि scrollsToTop संपत्ति हाँ है, तो इसका प्रतिनिधि shouldScrollViewScrollToTop से वापस नहीं लौटाता है, और यह पहले से ही शीर्ष पर नहीं है। आईफोन पर, हम केवल इस इशारा को निष्पादित करते हैं यदि ऑन-स्क्रीन स्क्रॉल व्यू scrollsToTop == हाँ के साथ है। यदि एक से अधिक पाया गया है, तो कोई भी स्क्रॉल नहीं किया जाएगा। */

@property (nonatomic) BOOL scrollsToTop; // डिफ़ॉल्ट हाँ है।

तो अपने मामले में, सभी स्क्रॉल को सेट करने के लिए सेट करें, सिवाय इसके कि आप उस विशेष पल में सक्षम करना चाहते हैं।

+0

10x, यह बहुत उपयोगी था :) – Eyal

2

आपको अपने नेस्टेड नियंत्रकों को बाल नियंत्रकों के रूप में पंजीकृत करना चाहिए।

[self addChildViewController:vcA]; 
[self addChildViewController:vcB]; 
[self addChildViewController:vcC]; 

मुझे यकीन नहीं है कि यह आपकी समस्या को हल करने में मदद करेगा, लेकिन ऐसा करने का यह सही तरीका है।

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