আইওএস 7+ সুইফ্ট
সুইফট 4:
// 2018.10.30 par:
// I've updated this answer with an asynchronous dispatch to the main queue
// when we're called without animation. This really should have been in the
// previous solutions I gave but I forgot to add it.
extension UINavigationController {
public func pushViewController(
_ viewController: UIViewController,
animated: Bool,
completion: @escaping () -> Void)
{
pushViewController(viewController, animated: animated)
guard animated, let coordinator = transitionCoordinator else {
DispatchQueue.main.async { completion() }
return
}
coordinator.animate(alongsideTransition: nil) { _ in completion() }
}
func popViewController(
animated: Bool,
completion: @escaping () -> Void)
{
popViewController(animated: animated)
guard animated, let coordinator = transitionCoordinator else {
DispatchQueue.main.async { completion() }
return
}
coordinator.animate(alongsideTransition: nil) { _ in completion() }
}
}
সম্পাদনা: আমি আমার মূল উত্তরের একটি সুইফট 3 সংস্করণ যুক্ত করেছি। এই সংস্করণে আমি সুইফট 2 সংস্করণে দেখানো উদাহরণ সহ-অ্যানিমেশনটি সরিয়ে দিয়েছি বলে মনে হচ্ছে এটি প্রচুর লোককে বিভ্রান্ত করেছে।
সুইফট 3:
import UIKit
// Swift 3 version, no co-animation (alongsideTransition parameter is nil)
extension UINavigationController {
public func pushViewController(
_ viewController: UIViewController,
animated: Bool,
completion: @escaping (Void) -> Void)
{
pushViewController(viewController, animated: animated)
guard animated, let coordinator = transitionCoordinator else {
completion()
return
}
coordinator.animate(alongsideTransition: nil) { _ in completion() }
}
}
সুইফট 2:
import UIKit
// Swift 2 Version, shows example co-animation (status bar update)
extension UINavigationController {
public func pushViewController(
viewController: UIViewController,
animated: Bool,
completion: Void -> Void)
{
pushViewController(viewController, animated: animated)
guard animated, let coordinator = transitionCoordinator() else {
completion()
return
}
coordinator.animateAlongsideTransition(
// pass nil here or do something animated if you'd like, e.g.:
{ context in
viewController.setNeedsStatusBarAppearanceUpdate()
},
completion: { context in
completion()
}
)
}
}
viewDidAppear:animated:
তবে আপনার ভিউ কন্ট্রোলার পর্দায় প্রদর্শিত প্রত্যেকবারই কোডটি কার্যকর করতে দিন (viewDidLoad
কেবলমাত্র প্রথমবার আপনার ভিউ কন্ট্রোলারটি লোড করা হয়)