البرمجة

حل مشكلة initializer في custom navigation controller

عند إنشاء custom navigation controller في Swift، يجب عليك تنفيذ جميع المُعيَّنات المطلوبة للفئة الأساسية UINavigationController. في حالتك، يجب عليك تنفيذ المعيَّنة init(nibName:bundle:) بالإضافة إلى المعيَّنتين التي قمت بتنفيذهما بالفعل.

يمكنك تنفيذ المعيَّنة المطلوبة بالشكل التالي:

swift
public class CustomNavigationController: UINavigationController { // MARK: - Life Cycle override init(rootViewController: UIViewController) { super.init(rootViewController: rootViewController) delegate = self } // Implement required initializer public init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) } required public init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) delegate = self } }

بعد تنفيذ هذه المعيَّنة، يجب أن تعمل custom navigation controller بدون مشاكل.

المزيد من المعلومات

عند إنشاء custom navigation controller في iOS، يجب تنفيذ المعيَّنات المطلوبة من الفئة الأساسية UINavigationController. الفئة UINavigationController تحتوي على معيَّنة init(nibName:bundle:) التي يجب تنفيذها في custom navigation controller حتى يمكن استخدامها بشكل صحيح.

عادةً، يكون تنفيذ المعيَّنة init(nibName:bundle:) بسيطًا، ويمكن أن يتمثل في استدعاء المعيَّنة المقابلة في الفئة الأساسية مع تمرير القيم المناسبة. في الكود الذي قمت بتقديمه، تم تنفيذ المعيَّنة init(coder:) ولكن لم يتم تنفيذ المعيَّنة init(nibName:bundle:)، مما أدى إلى ظهور الخطأ.

بعد تنفيذ المعيَّنة المطلوبة، يمكنك اختبار custom navigation controller الخاص بك ويجب أن يعمل بشكل صحيح دون ظهور الخطأ.

زر الذهاب إلى الأعلى