যদিও viewWillAppear()
এবং viewDidDisappear()
করছে যখন ব্যাক বোতাম চাপড় মেরে বলা, তারা অন্য সময়ে বলা হয়। এটি সম্পর্কে আরও উত্তর দেখুন।
ইউআইভিউউকন্ট্রোলআর পিতামাতার ব্যবহার
willMoveToParentViewController(_:)
OR এর সহায়তায় ভিসি যখন তার প্যারেন্ট (নেভিগেশনকন্ট্রোলার) থেকে সরিয়ে ফেলা হয় তখন পিছনের বোতামটি সনাক্ত করা আরও ভাল হয়didMoveToParentViewController()
যদি পিতামাতারা শূন্য থাকে তবে ভিউ কন্ট্রোলারটি নেভিগেশন স্ট্যাক থেকে পপ করা হচ্ছে এবং খারিজ করা হবে। পিতামাতা যদি শূন্য না হন তবে এটি স্ট্যাকের সাথে যুক্ত হয়ে উপস্থাপিত হচ্ছে।
// Objective-C
-(void)willMoveToParentViewController:(UIViewController *)parent {
[super willMoveToParentViewController:parent];
if (!parent){
// The back button was pressed or interactive gesture used
}
}
// Swift
override func willMove(toParent parent: UIViewController?) {
super.willMove(toParent: parent)
if parent == nil {
// The back button was pressed or interactive gesture used
}
}
এর জন্য অদলবদল করুন এবং ভিউ কন্ট্রোলারকে বরখাস্ত করার পরে কাজ করার willMove
জন্য didMove
স্ব-পিতা-মাতাকে পরীক্ষা করুন ।
বরখাস্ত করা বন্ধ করা হচ্ছে
মনে রাখবেন, পিতামাতাকে চেক করা আপনাকে কোনও ধরণের অ্যাসিঙ্ক সেভ করার প্রয়োজন হলে রূপান্তরটি "বিরতি" দিতে দেয় না। এটি করতে আপনি নিম্নলিখিতটি প্রয়োগ করতে পারেন। এখানে কেবল খারাপ দিক আপনিই অভিনব আইওএস স্টাইলযুক্ত / অ্যানিমেটেড ব্যাক বোতামটি হারাবেন। ইন্টারেক্টিভ সোয়াইপ অঙ্গভঙ্গিটি সম্পর্কেও এখানে সতর্কতা অবলম্বন করুন। এই কেসটি পরিচালনা করতে নিম্নলিখিতটি ব্যবহার করুন।
var backButton : UIBarButtonItem!
override func viewDidLoad() {
super.viewDidLoad()
// Disable the swipe to make sure you get your chance to save
self.navigationController?.interactivePopGestureRecognizer.enabled = false
// Replace the default back button
self.navigationItem.setHidesBackButton(true, animated: false)
self.backButton = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Plain, target: self, action: "goBack")
self.navigationItem.leftBarButtonItem = backButton
}
// Then handle the button selection
func goBack() {
// Here we just remove the back button, you could also disabled it or better yet show an activityIndicator
self.navigationItem.leftBarButtonItem = nil
someData.saveInBackground { (success, error) -> Void in
if success {
self.navigationController?.popViewControllerAnimated(true)
// Don't forget to re-enable the interactive gesture
self.navigationController?.interactivePopGestureRecognizer.enabled = true
}
else {
self.navigationItem.leftBarButtonItem = self.backButton
// Handle the error
}
}
}
দেখার বিষয়ে আরও প্রদর্শিত হবে / উপস্থিত হবে
আপনি যদি viewWillAppear
viewDidDisappear
সমস্যাটি না পেয়ে থাকেন তবে আসুন একটি উদাহরণ দিয়ে দেখি। বলুন আপনার কাছে তিনটি ভিউ কন্ট্রোলার রয়েছে:
- ListVC: একটি সারণী দর্শন
- বিশদ বিবরণ : একটি জিনিস সম্পর্কে বিশদ
- সেটিংসভিসি: কোনও জিনিসের জন্য কিছু বিকল্প
কল অনুসরণ দেয় detailVC
হিসাবে আপনি থেকে যান listVC
থেকে settingsVC
এবং ফিরেlistVC
তালিকা> বিশদ (বিবরণ ধাপ VV) Detail.viewDidAppear
<- প্রদর্শিত
বিশদ> সেটিংস (পুশ সেটিংস VC ) Detail.viewDidDisappear
<- অদৃশ্য
এবং হিসাবে আমরা ফিরে যেতে ...
সেটিংস> বিস্তারিত (পপ settingsVC) Detail.viewDidAppear
<- প্রদর্শিত
বিস্তারিত> তালিকা (পপ detailVC) Detail.viewDidDisappear
<- অদৃশ্য
লক্ষ্য করুন যে viewDidDisappear
একাধিকবার বলা হয়, কেবল ফিরে যাওয়ার সময় নয়, এগিয়ে যাওয়ার সময়ও। দ্রুত অপারেশনের জন্য যা কাঙ্ক্ষিত হতে পারে, তবে নেটওয়ার্ক কলের মতো আরও জটিল ক্রিয়াকলাপের জন্য, এটি নাও পারে।