سؤال

لدي nscollectionview والعرض هو nsbox مع تسمية و nsbutton. أريد نقرًا مزدوجًا أو نقرة من NSButton لإخبار وحدة التحكم بتنفيذ إجراء مع الكائن الممثل لـ NSCOLLECTIONViewItem. تم تصميم طريقة عرض العنصر ، والرمز كما يلي:

#import <Cocoa/Cocoa.h>
#import "WizardItem.h"

@interface WizardItemView : NSBox {
    id delegate;
    IBOutlet NSCollectionViewItem * viewItem;
    WizardItem * wizardItem;
}

@property(readwrite,retain) WizardItem * wizardItem;
@property(readwrite,retain) id delegate;

-(IBAction)start:(id)sender;

@end

#import "WizardItemView.h"

@implementation WizardItemView
@synthesize wizardItem, delegate;

-(void)awakeFromNib {   
    [self bind:@"wizardItem" toObject:viewItem withKeyPath:@"representedObject" options:nil];
}

-(void)mouseDown:(NSEvent *)event {
    [super mouseDown:event];
    if([event clickCount] > 1) {
        [delegate performAction:[wizardItem action]];
    }   
}

-(IBAction)start:(id)sender {
    [delegate performAction:[wizardItem action]];
}


@end

المشكلة التي أواجهتها هي أنه بصفته ibacte ، فإن الأشياء الوحيدة في نطاق -Start هي الأشياء التي تم ربطها في IB ، لذلك تفويض و ViewItem. هذا يعني أنه لا يمكنني الحصول على الكائن الممثل لإرساله إلى المندوب.

هل هناك طريقة للتغلب على هذا النطاق المحدود أو طريقة أفضل أو الحصول على الكائن الممثل؟

شكرًا.

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

المحلول

أولاً ، لا تحتاج أبدًا إلى مشاهدات الفئة الفرعية.

Bind لا تفعل ما تعتقده - تريد AddObserver: Forkeypath: الخيارات: السياق: (يجب أن تحاول فهم ما هو مع ذلك).

عندما تقول "يبدو أن المفتاح هو وجهة نظر" النموذج الأولي "لـ nscollectionViewitem" أعتقد أنك مرتبك حقًا ...

ننسى Iboutlet & ibacte - لا يعني أي شيء إذا لم تكن منشئ الواجهة. "النموذج الأولي" لا يعني شيئًا في الهدف-C.

لا يكون للطريقتين في العرض نطاق مختلف بأي شكل من الأشكال - لا يوجد فرق بينهما على الإطلاق. كلاهما طريقان ، يعادل كل شيء بصرف النظر عن أسمائهم (وبالطبع الكود الذي تحتوي عليه).

إذا كان WizardItem لاغال في البداية ولكن له قيمة في -mousedown ، فهذا يتعلق تمامًا بالتوقيت الذي يطلق عليهم. إما لديك كائن يذهب بعيدًا جدًا أو لم يتم إنشاؤه بعد في نقطة تعتقد أنه.

هل أنت على دراية بـ Nszombie؟ ستجده مفيدًا جدًا.

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