كيف يمكنني الحفاظ على NSPathControl تحديث مع مسار الخلية المحددة في NSBrowser

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

سؤال

وأنا بحاجة للحفاظ على NSPathControl تحديث مع المسار المحدد حاليا في NSBrowser، ولكن أواجه صعوبة في معرفة طريقة للحصول على إشعارات عند تغيير المسار من NSBrowser. الطريقة المثلى للقيام بذلك سيكون لمجرد أن يكون لمراقبة مسار مفتاح المسار في NSBrowser، ولكن هذا يعطي المنظمة من أن نلاحظ فقط طرق set<key> التي تعود رسالة باطلة وأية تحديثات (setPath بإرجاع قيمة نجاح منطقي).

وحاولت أيضا مراقبة مسار مفتاح selectedCell، ولكن أنا لا تحصل على إشعارات عند اختيار هناك تغيير.

هل هناك طريقة أخرى واضحة حقا أن تفعل هذا الذي أنا في عداد المفقودين؟

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

المحلول

وبإذن من روب Keniger في أكثر من الكاكاو ديف :

<اقتباس فقرة>   

هل نظرت إلى SimpleBrowser   مثلا في / المطور / أمثلة؟ هذا   يبين كيفية الحصول على التحديد الحالي   عندما يتم تغييره من قبل المستخدم،   في الأساس فقط عن طريق إنشاء   عمل NSBrowser.

وهذا هو في الواقع طريقة للقيام بذلك. مجرد تنفيذ - (الفراغ) broswerClicked: طريقة (بما في ذلك رسم الخرائط في واجهة البناء) مع كل ما تريد أن يحدث في كل مرة تغيير التحديد داخل هذا الأسلوب، منها مثلا

.
- (void)browserClicked:(id)browser {
    self.pathToSelectedCell = [browser path]; // NSPathControl is bound to pathToSelectedCell
}

نصائح أخرى

ولقد دققت في IB، ويبدو NSBrowser لديها مسارات مؤشر اختيار ملزمة (صفيف من الكائنات NSIndexPath) التي يمكن ان ترصد مع المنظمة من. إنه أمر غريب ولكن لا أرى أي ذكر لذلك في مستندات، لذلك قد تحتاج إلى القيام به القليل من الأبحاث لمعرفة ما إذا كان هذا شيء يجب أو لا يجب استخدام، حتى لو كان يبدو للعمل. إذا كان كذلك، في طريقة ملاحظتكم المنظمة من فستجد المسار الحالي للمتصفح، وتحويل ذلك إلى NSURL يمكن استخدام جهاز التحكم المسار.

إذا لم يفلح ذلك هناك أيضا - (BOOL)browser:(NSBrowser *)sender selectRow:(NSInteger)row inColumn:(NSInteger)column طرق مندوب و- (BOOL)browser:(NSBrowser *)sender selectCellWithString:(NSString *)title inColumn:(NSInteger)column.

واعتبارا من 10.6، يمكن للمرء معرفة العناصر التي تم تحديدها باستخدام رد مندوب كما يلي:

- (NSIndexSet *)browser:(NSBrowser *)browser selectionIndexesForProposedSelection:(NSIndexSet *)proposedSelectionIndexes inColumn:(NSInteger)column
{
    NSLog(@"New first item of the new selection is at index %@", [proposedSelectionIndexes firstIndex]);
    // Do something with the selected index or indicies
    return proposedSelectionIndexes; // Allow the selection to occur by not changing this
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top