वीसी प्रस्तुत करते समय या खारिज करते समय, मैं छिपाना और टैबबार दिखाना नहीं चाहता क्योंकि यह खराब उपयोगकर्ता अनुभव बनाता है। इसके बजाय, मैं टैब बार पर सीधे अगले वीसी प्रस्तुत करना चाहता हूं जैसे कि जब मैं धीरे-धीरे बाएं से दाएं खींचकर अगली सीवीसी को खारिज कर देता हूं, तो मैं दृश्य के पीछे छुपा टैबबार देख सकता हूं (जैसा कि नीचे छवि में दिखाया गया है)वर्तमान टैब पर वर्तमान दृश्य नियंत्रक नेविगेशन नियंत्रक
नोट, मेरे ऐप में दो टैब हैं जिनमें दो वीसी (वीसीए, वीसीबी) शामिल हैं। वीसी दोनों में भी नेविगेशन बार एम्बेडेड है। वीसीए 1 और वीसीबी सेगमेंट्स वीसीबी 1 तक वीसीए सेगमेंट। फिलहाल, वीसीए और वीसीबी के अंदर मैं निम्नलिखित कार्य को कुछ छिपाने और बिना छिपाने के लिए कॉल करने के लिए बुला रहा हूं जब दृश्य (नीचे कोड)।
self.navigationController?.showViewController(vc, sender: self)
// Inside ViewWillAppear Only reappear the tab bar if we successfully enter Discover VC (To prevent drag back half way causing tab bar to cause comment entry to be floating). This code check if we have successfully enters DiscoverVC
if let tc = transitionCoordinator() {
if tc.initiallyInteractive() == true {
tc.notifyWhenInteractionEndsUsingBlock({(context: UIViewControllerTransitionCoordinatorContext) -> Void in
if context.isCancelled() {
// do nothing!
}
else {
// not cancelled, do it
self.tabbarController.tabBar.hidden = false
}
})
} else {
// not interactive, do it
self.tabbarController.tabBar.hidden = false
}
} else {
// not interactive, do it
self.tabbarController.tabBar.hidden = false
}
---------- GOKUL से कार्य समाधान -----------
गोकुल के जवाब स्पॉट के करीब है पर। मैंने अपने समाधान के साथ खेला है और एक अनावश्यक वीसी रखने की आवश्यकता को खत्म करने के लिए निम्नलिखित सुधार के साथ आया है और टैबवीसी प्रकट होने से पहले एक संक्षिप्त सेकंड के लिए प्रारंभिक वीसी को भी खत्म कर दिया गया है। लेकिन गोकुल के बिना, मैं कभी इसके साथ कभी नहीं आऊंगा !!
इसके अतिरिक्त, गोकुल की विधि मेरे लिए एक बग तैयार करेगी, भले ही मेरे पास टैबवीसी दिखाए जाने से पहले प्रारंभिक "सामान्य" वीसी लॉगिनबैक हो। यह loginVC केवल रूटवीसी है यदि उपयोगकर्ता को लॉगिन करने की आवश्यकता है। इसलिए ज्यादातर मामलों में रूटवीसी को रूटवीसी पर सेट करके, एनवीवीसी कभी पंजीकृत नहीं होगा।
समाधान एक वीसी में नेविगेशन नियंत्रक और टैबबार नियंत्रक को एम्बेड करना है। लेकिन यह केवल तभी काम करता है जब NavVC TabBarVC से पहले है। मुझे यकीन नहीं है कि क्यों, लेकिन एकमात्र तरीका जिसने मुझे navVC-> टैबवीसी-> वीसी 1/वीसी 2 को वीवी 1 को पहले एनवीवीसी के साथ एम्बेड करना है, फिर से वीवी 1 पर क्लिक करने के लिए टैबवी को एम्बेड करने के लिए (यह मुझे पहले एक डालने की अनुमति नहीं देगा टैबवीसी और मुझे भी NavVC एम्बेड करने के बाद वीसी 1 पर क्लिक करना पड़ा)।
बहुत अच्छी तरह से समझाया और अच्छा समाधान! बहुत सराहना की। मैंने किसी भी व्यक्ति के लिए उपरोक्त कुछ सुधारों के साथ अपना उत्तर अपडेट किया है जिसकी आवश्यकता है – user172902
आपको एडवर्ड धन्यवाद। :) – Gokul