শীট সনাক্তকরণ আইওএস 13 এ খারিজ করা হয়েছিল


113

আইওএস 13 এর আগে, উপস্থাপিত ভিউ কন্ট্রোলাররা পুরো স্ক্রীনটি coverেকে রাখত। এবং, যখন বরখাস্ত করা হয়, তখন পিতামাতার ভিউ কন্ট্রোলার viewDidAppearফাংশনটি কার্যকর করা হয়।

এখন আইওএস 13 ডিফল্টরূপে শিট হিসাবে ভিউ কন্ট্রোলারদের উপস্থাপন করবে, যার অর্থ কার্ডটি আংশিকভাবে অন্তর্নিহিত ভিউ কন্ট্রোলারকে কভার করবে, যার অর্থ হ'ল viewDidAppearনা, কারণ পিতামাতার ভিউ নিয়ামক আসলে কখনও অদৃশ্য হয়নি।

উপস্থাপিত ভিউ কন্ট্রোলার শীটটি বরখাস্ত করে দেওয়ার কোনও উপায় কী? আমি অন্য কোনও ফাংশনটি কোনও ধরণের প্রতিনিধি ব্যবহার না করে প্যারেন্ট ভিউ কন্ট্রোলারে ওভাররাইড করতে পারি ?



তাহলে কোনও একক সময়ে সমস্ত মডেল শিটগুলি রুট ভিসিতে বরখাস্ত করার কোনও উপায় আছে?
ওয়েসলি


কখন তা বরখাস্ত করা হয়েছিল তা আপনার জানা দরকার? যদি ডেটাটি পুনরায় লোড করা হয় এবং ইউআই আপডেট করা হয় তবে বিজ্ঞপ্তিগুলি বা কেভিও একটি ভাল বিকল্প হতে পারে।
martn_st

উত্তর:


57

উপস্থাপিত ভিউ কন্ট্রোলার শীটকে বরখাস্ত করে দেওয়ার কি কোনও উপায় আছে?

হ্যাঁ.

আমি অন্য কোনও ফাংশনটি কোনও ধরণের প্রতিনিধি ব্যবহার না করে প্যারেন্ট ভিউ কন্ট্রোলারে ওভাররাইড করতে পারি?

না। "কিছু প্রকারের প্রতিনিধি" আপনি কীভাবে তা করেন। নিজেকে উপস্থাপনা নিয়ন্ত্রকের প্রতিনিধি করুন এবং ওভাররাইড করুন presentationControllerDidDismiss(_:)

https://developer.apple.com/docamentation/uikit/uiadaptivepresentationcontrollerdelegate/3229889- preferencesationcontrollerdiddismiss


কোনও রানআউটটাইম-উত্পন্ন ইভেন্টের অভাব আপনাকে অবহিত করে যে একটি উপস্থাপিত ভিউ কন্ট্রোলার, পুরো স্ক্রীন হোক বা না হোক, বরখাস্ত করা হয়েছে, তা অবশ্যই ঝামেলাজনক; তবে এটি কোনও নতুন সমস্যা নয়, কারণ সেখানে সর্বদা পূর্ণ-স্ক্রীন উপস্থাপিত ভিউ কন্ট্রোলার রয়েছে। এটি কেবল এখন (আইওএস 13 এ) তাদের আরও রয়েছে! আমি এই বিষয়ে অন্য কোথাও একটি পৃথক প্রশ্নোত্তর উত্সর্গ করেছি: ইউনিফাইড ইউআইভিউকন্ট্রোলার "শীর্ষস্থানীয়" সনাক্তকরণ হয়ে গেল?


6
এই যথেষ্ট নয়. আপনার যদি উপস্থাপিত ভিসিতে কোনও ন্যাবার থাকে এবং একটি কাস্টম বার বোতাম থাকে যা আপনার ভিউ প্রোগ্রামিয়ালি খারিজ করে দেয়, উপস্থাপনা নিয়ন্ত্রণকারীকে বরখাস্ত করা হবে না।
ইরিনা

14
হাই @ ইরিনা - আপনি যদি নিজের মতামতটি প্রোগ্রাম্যিকভাবে বরখাস্ত করেন তবে আপনাকে কলব্যাকের দরকার নেই কারণ আপনি নিজের মতামতকে প্রোগ্রাম্যিকভাবে বরখাস্ত করেছেন - আপনি জানেন যে আপনি এটি করেছেন কারণ আপনি এটি করেছেন। প্রতিনিধি পদ্ধতি কেবলমাত্র ব্যবহারকারী এটি করে থাকে।
ম্যাট

6
@ ম্যাট উত্তরের জন্য ধন্যবাদ। প্রোগ্রামটিগতভাবে ভিউ খারিজ হয়ে গেলে এটি কল হয় না (যেমন ইরিনা বলেছেন) এবং আপনি ঠিক বলেছেন যে আমরা জানি যে আমরা এটি করেছি। আমি কেবল মনে করি আইওএস 13 এ নতুন মডেল উপস্থাপনা শৈলীর সাথে এক ধরণের 'ভিউউইলঅ্যাপিয়ার' পেতে কেবল লিখতে লিখতে অযৌক্তিক বয়লারপ্লেট কোড রয়েছে think আপনি যখন এমন কোনও আর্কিটেকচারের মাধ্যমে রাউটিং পরিচালনা করছেন যেখানে রাউটিংটি নিবিষ্ট করা হয় এটি বিশেষত অগোছালো হয়ে যায় (উদাহরণস্বরূপ এমভিভিএম + সমন্বয়কারী বা ভিআইপিআর মধ্যে একটি রাউটার টাইপ)
অ্যাডাম ওয়েইট

4
@ অ্যাডামওয়েট আমি সম্মত তবে এই সমস্যাটি নতুন নয়। আমাদের বেশ কয়েক বছর ধরেই এই সমস্যাটি ছিল, পপওভারগুলি সহ, পূর্ণ-স্ক্রিনবিহীন ভিউ কন্ট্রোলারগুলি, সতর্কতা সহ এবং আরও অনেক কিছু। আমি এটিকে অ্যাপলের "ইভেন্টস" এর পুনঃসংশ্লিষ্ট একটি গুরুতর ত্রুটি হিসাবে বিবেচনা করি। আমি কেবল বলছি বাস্তবতা কী এবং কেন। আমি এখানে ইস্যুটির সাথে সরাসরি আঁকড়ে ধরছি
ম্যাট

4
উপস্থাপনাকন্ট্রোলার ডিডডিজমিজ (_ :)। চাইল্ড ভিসিতে আমি যখন বোতামটি ক্লিক করি তখন কল হয় না কোন সাহায্য?
কৃষ্ণ মীনা

41

এখানে পিতামাতার ভিউ-কন্ট্রোলারের একটি কোড উদাহরণ রয়েছে যা চাইল্ড ভিউ-কন্ট্রোলার যখন এটি শীট হিসাবে উপস্থাপন করে তখন (যেমন, ডিফল্ট আইওএস 13 পদ্ধতিতে) বরখাস্ত করা হয়:

public final class Parent: UIViewController, UIAdaptivePresentationControllerDelegate
{
  // This is assuming that the segue is a storyboard segue; 
  // if you're manually presenting, just see the delegate there.
  public override func prepare(for segue: UIStoryboardSegue, sender: Any?)
  {
    if segue.identifier == "mySegue" {
      segue.destination.presentationController?.delegate = self;
    }
  }

  public func presentationControllerDidDismiss(
    _ presentationController: UIPresentationController)
  {
    // Only called when the sheet is dismissed by DRAGGING.
    // You'll need something extra if you call .dismiss() on the child.
    // (I found that overriding dismiss in the child and calling
    // presentationController.delegate?.presentationControllerDidDismiss
    // works well).
  }
}

জেরল্যান্ড 2 এর উত্তর বিভ্রান্ত হয়েছে, যেহেতু (ক) মূল প্রশ্নকর্তা শীটটি বরখাস্ত করার সময় একটি ফাংশন কল পেতে চেয়েছিলেন (যেখানে তিনি উপস্থাপনাটি প্রয়োগ করেন নিয়ন্ত্রণকারীর ডিডএটেম্পট টোডিজিস, যাকে বলা হয় যখন ব্যবহারকারী শীটটি খারিজ করতে ব্যর্থ হয়) এবং (খ) সেটিংটি মোডাল ইনপ্রেসেশন সম্পূর্ণরূপে অরথোগোনাল এবং বাস্তবে উপস্থাপিত শীটটিকে অস্বীকারযোগ্য করে তুলবে (যা ওপি যা চায় তার বিপরীত)।


6
এটি ভাল কাজ করে। কেবলমাত্র একটি টিপস যে আপনি যদি আপনার ডাকা ভিসিতে কোনও ন্যাভাল কন্ট্রোলার ব্যবহার করেন তবে আপনাকে এনএভি কন্ট্রোলারটিকে উপস্থাপনাকন্ট্রোলার হিসাবে নিয়োগ করা উচিত?, ডেলিগেট (ভিসি নয় শীর্ষস্থানীয় ভিউকন্ট্রোলার হিসাবে আছে)।
instAustralia

@ ইস্ট অস্ট্রেলিয়া আপনি কোনও ডকুমেন্টেশনের কারণ বা রেফারেন্স ব্যাখ্যা করতে পারেন? ধন্যবাদ
আহমেদ ওসামা

উপস্থাপনাকন্ট্রোলারডিজডিজমিস যখন ব্যবহারকারীরা পিছনে বোতাম টিপুন তখন এটি কীভাবে বলা যায়?
কৃষ্ণ মীনা

@ আহমদওসামা - নেভিগেশন কন্ট্রোলার হ'ল উপস্থাপনা নিয়ন্ত্রক এবং তাই প্রতিনিধি হিসাবে এটি বরখাস্তের প্রতিক্রিয়া জানানো হবে। আমি নাভ কন্ট্রোলারে এম্বেড থাকা ভিসিটি চেষ্টা করেছিলাম কিন্তু এখানেই আমার আসল বোতামগুলি বাতিল করে এবং প্রতিক্রিয়া জানায়। আমি এটি অ্যাপল ডক্সে
posts

27

ফিরে পেতে আরও একটি বিকল্প viewWillAppearএবং viewDidAppearসেট করা আছে

let vc = UIViewController()
vc.modalPresentationStyle = .fullScreen

এই বিকল্পটি পূর্ণ স্ক্রিনটি কভার করে এবং বরখাস্ত করার পরে, উপরের পদ্ধতিগুলিতে কল করে


4
আপনাকে পাইটারপ্যান ধন্যবাদ এটি কাজ করছে। এটি দুর্দান্ত এবং দ্রুত সমাধান।
এরকাম কুয়েট

পূর্বের ডিফল্ট আচরণটি পুনরুদ্ধার করার জন্য এই দ্রুত এবং নির্ভরযোগ্য উপায়টির জন্য আপনাকে ধন্যবাদ। তাত্ক্ষণিকভাবে এই সংশোধনটি স্থানে রাখতে সক্ষম হয়ে তারপরে যৌক্তিক উপায়ে নতুন আচরণে রূপান্তরের পরিকল্পনা করে।
আয়ান লাভজয়

11
এটি একটি স্থির চেয়ে কর্মক্ষেত্র। আইওএস 12 স্টাইলের শীটগুলিতে কেবল ফিরে যাওয়া সবার পক্ষে দুর্দান্ত নয়। আইওএস 13 টি দুর্দান্ত! :)
ম্যাট

4
আইপ্যাডের জন্য এটি ব্যবহার করার ক্ষেত্রে সতর্কতা অবলম্বন করুন, মডেলভাবে উপস্থাপন করার সময় আইপ্যাড কোনও পৃষ্ঠা শিট হিসাবে উপস্থাপন করার জন্য ডিফল্ট। এটি আইপ্যাডকে ফুলস্ক্রিন হিসাবে উপস্থাপন করতে বাধ্য করবে
wyu

আমার জন্য কাজ না। আমি মডেল কন্ট্রোলার খুলি। এটিকে বরখাস্ত করে বন্ধ করুন, তবে উইলটি প্রদর্শিত হবে না। কেন? ধন্যবাদ
neo999

21

ভবিষ্যতের পাঠকদের জন্য বাস্তবায়নের সাথে আরও একটি সম্পূর্ণ উত্তর:

  1. রুট ভিউতে কন্ট্রোলারগুলি সেগের জন্য প্রস্তুতগুলি নিম্নলিখিতগুলি যুক্ত করে (ধরে নিবেন আপনার মডেলের একটি ন্যাভাল কন্ট্রোলার রয়েছে)
    // Modal Dismiss iOS 13
    modalNavController.presentationController?.delegate = modalVc
  1. মডেল ভিউ কন্ট্রোলারে নিম্নলিখিত প্রতিনিধি + পদ্ধতি যুক্ত করুন
// MARK: - iOS 13 Modal (Swipe to Dismiss)

extension ModalViewController: UIAdaptivePresentationControllerDelegate {
    func presentationControllerDidAttemptToDismiss(_ presentationController: UIPresentationController) {


        print("slide to dismiss stopped")
        self.dismiss(animated: true, completion: nil)
    }
}
  1. মডেল ভিউ কন্ট্রোলারে নিশ্চিত করুন যে প্রতিনিধি পদ্ধতি আহ্বানের জন্য নিম্নলিখিত সম্পত্তিটি সত্য
    self.isModalInPresentation = true
  1. লাভ

4
self.isModalInPstreamation = সত্য তারপর ড্র্যাগ বরখাস্ত কাজ নয়। সেই লাইন ডেলিগেট পদ্ধতিটি অপসারণ করুন এখনও ঠিক আছে is ধন্যবাদ.
যোগেশ প্যাটেল

4
এটি বিভ্রান্ত কারণ (ক) মূল প্রশ্নকর্তা শিটটি বরখাস্ত করার সময় একটি ফাংশন কল পেতে চেয়েছিলেন (যেখানে আপনি উপস্থাপনাটি প্রয়োগ করেছেন কন্ট্রোলারডিএডএটেম্পটিটডিজমিস, যাকে বলা হয় যখন ব্যবহারকারী শীটটি খারিজ করতে ব্যর্থ হয়), এবং (খ) সেটিংটি মোডাল ইনপ্রেসিটেশন সম্পূর্ণরূপে অর্থেগোনাল এবং প্রকৃতপক্ষে উপস্থাপিত শীটটিকে অস্বীকারযোগ্য করে তুলবে (যা ওপি যা চায় তার বিপরীত)।
ম্যাট

4
@ ম্যাট এর উত্তর পয়েন্ট (ক) জন্য অনুসরণ করুন: ব্যবহার করা presentationControllerDidDismissউচিত
gondo

5

সুইফট

সাধারণ সমাধান কলে viewWillAppear মধ্যে iOS13

class ViewController: UIViewController {

        override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(animated)
            print("viewWillAppear")
        }

        //Show new viewController
        @IBAction func show(_ sender: Any) {
            let newViewController = NewViewController()
            //set delegate of UIAdaptivePresentationControllerDelegate to self
            newViewController.presentationController?.delegate = self
            present(newViewController, animated: true, completion: nil)
        }
    }

    extension UIViewController: UIAdaptivePresentationControllerDelegate {
        public func presentationControllerDidDismiss( _ presentationController: UIPresentationController) {
            if #available(iOS 13, *) {
                //Call viewWillAppear only in iOS 13
                viewWillAppear(true)
            }
        }
    }

4
এটি কেবল উপরে থেকে স্লাইড ব্যবহার করে খারিজগুলি পরিচালনা করে, ফাংশনটি কল করে নয় dismiss(_)
পেড্রো পাওলো

3

ড্র্যাগ বা কল ডিসমিজ এসইউএনসি নীচের কোড সহ কাজ করবে।

1) রুট ভিউ কন্ট্রোলারে, আপনি যা বলতে চান এটি নীচের কোড হিসাবে তার উপস্থাপনা ভিউ নিয়ন্ত্রণকারী

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "presenterID" {
        let navigationController = segue.destination as! UINavigationController
        if #available(iOS 13.0, *) {
            let controller = navigationController.topViewController as! presentationviewcontroller
            // Modal Dismiss iOS 13
            controller.presentationController?.delegate = self
        } else {
            // Fallback on earlier versions
        }
        navigationController.presentationController?.delegate = self

    }
}

2) আবারও রুট ভিউ কন্ট্রোলারে, আপনি যখন বলবেন যে এর প্রেজেন্টেশন ভিউ কন্ট্রোলার বিচ্ছিন্ন হয়ে গেলে আপনি কী করবেন

public func presentationControllerDidDismiss(
  _ presentationController: UIPresentationController)
{
    print("presentationControllerDidDismiss")
}

1) উপস্থাপনা ভিউ কন্ট্রোলারে, যখন আপনি এই ছবিতে বাতিল বা সংরক্ষণ করুন বোতামটি চাপান। নীচে কোড কল করা হবে

self.dismiss(animated: true) {
        self.presentationController?.delegate?.presentationControllerDidDismiss?(self.presentationController!)
    }

এখানে চিত্র বর্ণনা লিখুন


4
উপস্থাপনাভিউ কন্ট্রোলার নেভিগেশন কন্ট্রোলআর.ট.ভিউ কনট্রোলার কাস্ট করা কি প্রয়োজনীয়? আমি এটি পাই না
ফিটসইউ

বাতিল বাটন চাইল্ড ভিসি থেকে বরখাস্ত করার পরে আমি কীভাবে প্যারেন্ট ভিসিতে ডেটা পুনরায় লোড করতে পারি?
কৃষ্ণ মীনা

3

বাতিল করা হচ্ছে এমন ইউআইভিউকন্ট্রোলারের উপরে ভিউউইলডিস্পায়ার ওভাররাইড করুন। এটি আপনাকে isBeingDismissedবুলিয়ান পতাকার মাধ্যমে বরখাস্ত করার বিষয়ে সতর্ক করবে ।

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)

    if isBeingDismissed {
        print("user is dismissing the vc")
    }
}

** যদি ব্যবহারকারীটি সোয়াইপ ডাউন হয়ে অর্ধেক হয়ে থাকে এবং কার্ডটি ব্যাক আপে সোয়াইপ করে তবে এটি খারিজ করা না হলেও তা বরখাস্ত হিসাবে নিবন্ধভুক্ত হবে। তবে এটি আপনার পক্ষে যত্নবান নাও হতে পারে edge


কি সম্পর্কেself.dismiss(animated: Bool, completion: (() -> Void)?)
আইজিস্ট

0

যদি কারও উপস্থাপিত ভিউ কন্ট্রোলারের অ্যাক্সেস না থাকে তবে তারা কেবলমাত্র নিয়ন্ত্রক উপস্থাপনের জন্য নিম্নলিখিত পদ্ধতিটিকে ওভাররাইড করতে পারে এবং এই পদ্ধতির সাথে উপরে উল্লিখিত কৌশলগুলির মধ্যে একটিতে পরিবর্তন করতে modalPresentationStyleপারে fullScreenবা পরিবর্তন করতে পারে

 override func present(_ viewControllerToPresent: UIViewController, animated flag: Bool, completion: (() -> Void)? = nil) {
    if let _ = viewControllerToPresent as? TargetVC {
        viewControllerToPresent.modalPresentationStyle = .fullScreen
    }
    super.present(viewControllerToPresent, animated: flag, completion: completion)
}

যদি উপস্থাপিত ভিউ কন্ট্রোলারটি নেভিগেশন কন্ট্রোলার হয় এবং আপনি রুট কন্ট্রোলারটি পরীক্ষা করতে চান তবে উপরের অবস্থার মতো হতে পারে

if let _ = (viewControllerToPresent as? UINavigationController)?.viewControllers.first as? TargetVC {
   viewControllerToPresent.modalPresentationStyle = .fullScreen
}

-2

আপনি যদি ফুলস্ক্রিনে মোডালপ্রেজেন্টেশন স্টাইল ব্যবহার করেন তবে নিয়ামকের আচরণটি যথারীতি ফিরে এসেছে।

কনসাল্টারকন্ট্রোলার নিয়ন্ত্রণকারী কনসাল্টার = এটি.স্টিরিবোর্ড.ইনস্ট্যান্ট ভিউকন্ট্রোলার ("পরামর্শদাতা নিয়ন্ত্রণকারী") কনসাল্টারকন্ট্রোলার হিসাবে; controllerConsultar.ModalPटकाationStyle = UIModalPstreamationStyle.FullScreen; এটি.ন্যাভিগেশনকন্ট্রোলার.পুশভিউ কনট্রোলার (কন্ট্রোলারকনসুলতার, সত্য);


বিদ্যমান উত্তরগুলি পুনরাবৃত্তি করে।
ম্যাট

-3

আমার দৃষ্টিকোণ থেকে, অ্যাপলটিকে pageSheetডিফল্ট হিসাবে সেট করা উচিত নয়modalPresentationStyle

আমি fullScreenব্যবহার করে শৈলীটি ডিফল্টে ফিরিয়ে আনতে চাইswizzling

এটার মত:

private func _swizzling(forClass: AnyClass, originalSelector: Selector, swizzledSelector: Selector) {
    if let originalMethod = class_getInstanceMethod(forClass, originalSelector),
       let swizzledMethod = class_getInstanceMethod(forClass, swizzledSelector) {
        method_exchangeImplementations(originalMethod, swizzledMethod)
    }
}

extension UIViewController {

    static func preventPageSheetPresentationStyle () {
        UIViewController.preventPageSheetPresentation
    }

    static let preventPageSheetPresentation: Void = {
        if #available(iOS 13, *) {
            _swizzling(forClass: UIViewController.self,
                       originalSelector: #selector(present(_: animated: completion:)),
                       swizzledSelector: #selector(_swizzledPresent(_: animated: completion:)))
        }
    }()

    @available(iOS 13.0, *)
    private func _swizzledPresent(_ viewControllerToPresent: UIViewController,
                                        animated flag: Bool,
                                        completion: (() -> Void)? = nil) {
        if viewControllerToPresent.modalPresentationStyle == .pageSheet
                   || viewControllerToPresent.modalPresentationStyle == .automatic {
            viewControllerToPresent.modalPresentationStyle = .fullScreen
        }
        _swizzledPresent(viewControllerToPresent, animated: flag, completion: completion)
    }
}

এবং তারপরে আপনার এই লাইনটি রাখুন AppDelegate

UIViewController.preventPageSheetPresentationStyle()

4
এটি বুদ্ধিমান কিন্তু আমি এটির সাথে একমত হতে পারি না। এটি হ্যাকি এবং আরও উল্লেখযোগ্যভাবে, এটি আইওএস 13 এর শস্যের বিপরীতে চলেছে You আইওএস 13 এ আপনার "কার্ড" উপস্থাপনাগুলি ব্যবহার করার কথা রয়েছে Apple এটি "এটি পেতে"।
ম্যাট

আপনার বক্তব্যের সাথে একমত হোন, এই সমাধানটি কার্ড উপস্থাপনা শৈলী যেমন অ্যাপল আমাদের উত্সাহিত করে তেমন ব্যবহার করতে সহায়তা করে না। তবে, এটি ডিফল্ট শৈলী হিসাবে সেট করা কোথাও কোথাও বিদ্যমান কোডের ভুল লাইনগুলিকে ভুল করে presentingViewControllerদেবে কারণ ট্রিগার হবে নাviewWillAppear
জ্যাকব

4
হ্যাঁ, তবে যেমনটি আমি ইতিমধ্যে আমার নিজের উত্তরে বলেছি, এটি সর্বদা ননফুলস্ক্রিন উপস্থাপনাগুলির জন্য একটি সমস্যা ছিল (যেমন আইপ্যাডে পপওভার এবং পৃষ্ঠা / ফর্ম শীট), সুতরাং এটি নতুন কিছু নয়। এখন এটি আরও কিছু আছে। নির্ভর করা viewWillAppearএক অর্থে সর্বদা ভুল ছিল। অবশ্যই আমি পছন্দ করি না অ্যাপল আমার সাথে এসে মেঝেটি কেটে ফেলবে। তবে আমি যেমন বলেছি, আমাদের কেবল এটির সাথে বাঁচতে হবে এবং জিনিসগুলি একটি নতুন উপায়ে করতে হবে।
ম্যাট

আমার প্রকল্পে এমন কিছু পরিস্থিতি রয়েছে যা আমি জানি না যেখানে একটি ভিউ কন্ট্রোলার (ডাকা presentedController) উপস্থাপিত হয় এবং ঠিক কী তাও জানি না presentingViewController। উদাহরণস্বরূপ: কিছু ক্ষেত্রে UIViewController.topMostViewController()আমাকে ব্যবহার করতে হবে যা আমাকে বর্তমান উইন্ডোতে সর্বাধিক দেখা নিয়ন্ত্রক প্রদান করে। তাই আমি কেন viewWillAppearআমার ভিউ কন্ট্রোলারগুলিতে সঠিক জিনিসগুলি (রিফ্রেশ ডেটা, ইউআই) করতে বর্তমান আচরণ রাখতে সুইজলিং করতে চাই । এটি সমাধান করার বিষয়ে আপনার যদি কোনও ধারণা থাকে তবে দয়া করে সহায়তা করুন।
জ্যাকব

ঠিক আছে, আমি আমার উত্তরের শেষে যে সমাধানটির সাথে সংযোগ দিচ্ছি তা সমাধান করার পক্ষে কাজ করে, আমি বিশ্বাস করি। উপস্থাপনার সময় কনফিগার করতে এটি কিছু কাজ নেয়, তবে মূলত এটি গ্যারান্টি দেয় যে উপস্থাপিত ভিউ কন্ট্রোলারকে বরখাস্ত করার সময় প্রতিটি উপস্থাপক (সতর্কতার উপস্থাপক সহ) শুনতে পান।
ম্যাট

-5

উপস্থাপনাটি ভিউকন্ট্রোলআরভিউউইল অ্যাপ্লায়ার কল করা কি সহজ হবে না? বরখাস্ত করবেন?

self.presentingViewController?.viewWillAppear(false)
self.dismiss(animated: true, completion: nil)

4
ফোন করা আপনার নয়।
ম্যাট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.