سؤال

أنا أحاول أن فئة فرعية NSCell لرسم تسليط الضوء على خلفية مخصصة.يبدو أن الوثائق تشير إلى أن الغلبة highlight:withFrame:inView: يجب أن تسمح لي بالقيام بذلك ولكن لا يتم استدعاء الطريقة أبدا.

بدلا من ذلك ، لقد تجاوزت drawInteriorWithFrame:inView: الذي يعمل بشكل جيد-يمكنني رسم ما أريد في الخلية.ومع ذلك ، فإن المسألة هي أن لدي لرسم كل شيء نفسي ، وفقدان وظيفة نوع نسيل أنا تمديد - على سبيل المثال قدرة نستكستفيلدسيل لعرض النص:

خلية مميزة مرسومة حسب الطلب:

enter image description here

ومع ذلك ، أريد فقط إعادة رسم الخلفية (التمييز) ، والاحتفاظ بالقدرة على استخدام الوظيفة الرئيسية للخلية الموسعة:

enter image description here

يمكنني بالطبع رسم النص بنفسي أيضا ، لكنني آمل أن تكون هناك طريقة أسهل للقيام بذلك.

أي مساعدة هو محل تقدير كبير.

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

المحلول

بفضل مساعدة @ بافاريوس لقد تمكنت من العمل بها.بلدي الموسعة نستكستفيلدسيل فئة التنفيذ يحتوي الآن:

-(NSColor *)highlightColorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
    return nil;
}

- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
    if ([self isHighlighted]) {
        // Draw highlight background here
    }

    [super drawInteriorWithFrame:cellFrame inView:controlView];
}

المفتاح هو التأكد من العودة nil ل highlightColorWithFrame:inView: لوقف drawInteriorWithFrame:inView: رسم خلفية ومع ذلك لا يزال يطلق عليه لرسم المحتوى الرئيسي (في هذه الحالة النص).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top