كيف يمكنني جعل بنك الاستثمار القومي الخاص بي يقوم بتحميل الفئة الفرعية UIScrollView المخصصة بشكل صحيح؟

StackOverflow https://stackoverflow.com/questions/835735

سؤال

كان لدي UIScrollView لطيف داخل طرفي، والذي كان يعمل بشكل جيد.ثم كان لدي بعض الاحتياجات الخاصة جدًا وفئة UIScrollView الفرعية.في Nib الخاص بي، قمت بتغيير الفئة في مفتش الهوية إلى الفئة الفرعية الخاصة بي.

ولكن لسبب ما، فإن -initWithFrame الخاص بي:لا يتم استدعاء الطريقة مطلقًا عندما يقوم مُحمل المنقار بإنشاء كل تلك الكائنات من المنقار.في الواقع لم أغير أي شيء الآن في فئتي الفرعية.وعرض التمرير يعمل بشكل جيد.توقع أن يبدو UIScrollView فارغًا حتى لو أخبرت المنقار أنه يجب أن يكون SpecializedUIScrollView لأغراض الاختبار.

هل هناك شيء آخر يجب علي مراعاته عند تصنيف UIScrollView ضمن فئة فرعية مع الاستمرار في استخدام ملف Nib لوضعه في منظوره الصحيح؟

يبدو المُهيئ المخصص الخاص بي كما يلي:

- (id)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        NSLog(@"Hello !!!!!!!!!!!!!");
    }
    return self;
}

لا أرى كلمة Hello أبدًا في وحدة التحكم، إذا حاولت تحميلها من Nib.بالطبع، إذا قمت بتخصيص ذلك وتهيئته بنفسي، فسيعمل.لكنني لا أرغب في وضع عرض التمرير الخاص بي برمجيًا، إذا كان بإمكاني استخدام Interface Builder الرائع بدلاً من ذلك.

هل كانت مفيدة؟

المحلول

ويتم تخزين الكائنات في بنك الاستثمار القومي أو xib ككائنات المتسلسلة، وهذا قد يعني ان لديك لاستخدام أسلوب awakeFromNib بسبب أساليب ال init تسمى أبدا.

نصائح أخرى

يمتد initWithCoder, تأكد من استدعاء الطريقة الفائقة.إنه خلال هذه المكالمة الفائقة setFrame سيتم استدعاؤه في صفك.

يمكنك بعد ذلك إعادة استخدام المعيار الخاص بك initWithFrame اتصل initWithCoder, ، وسوف يتحكم منشئ الواجهة في حجم الإطار.

- (id)initWithCoder:(NSCoder *)aDecoder {
    [super initWithCoder:aDecoder]; // Required. setFrame will be called during this method.
    return [self initWithFrame:[self frame]];
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top