NSCOMBOBOX - الحصول على معلومات محددة و NSComboboxDatasource
-
19-09-2019 - |
سؤال
للحياة مني، أنا مرتت باستمرار مع NSComboBox
.
لقد أنشأت كائن يتوافق NSComboBoxDataSource
البروتوكول، وتنفيذ:
- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox;
- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index;
أنا وضعت مثيل بلدي NSComboBox
لاستخدام مصدر البيانات، واضبط هذا الكائن كمصدر. التي تعمل بشكل رائع، إرجاع تنفيذي عدد العناصر، وإرجاع NSString
قيمة لعنصر في مؤشرات محددة.
ثم قررت أنني أريد أن أفعل شيئا عندما يتم تحديد شيء ما، حيث تبدأ مشاكلي. لا توجد طريقة واضحة لتجاوزها في NSComboBoxDataSource
بروتوكول للتعامل مع اختيار العناصر في مربع التحرير والسرد.
لذلك، لدي أيضا كائن بلدي يتوافق مع NSComboBoxDelegate
وتنفيذ:
- (void)comboBoxSelectionDidChange:(NSNotification *)notification;
لسوء الحظ، على عكس NSTableView
عند التحديد، كائن الإخطار هو NSComboBox
ليس كائن العنصر المحدد. "غرامة" أقول لنفسي، سأتصل NSComboBox
طريقة:
- (id)objectValueOfSelectedItem;
هذا يجب أن يرجع العنصر المحدد ويمكنني الذهاب من هناك. ومع ذلك، فإن هذه الطريقة هي أن تسمى فقط عندما usesDataSource
تم تعيين إلى NO
, ، وهذا ليس حالتي. تحذيرات تبدأ الطيران عندما أستخدم هذا.
لذلك، سؤالي هو، ما هي الطريقة الصحيحة للتعامل معها NSComboBox
التحديدات عند استخدام مصدر البيانات؟
المحلول
أعتقد أنك تريد indexofselatedem. بدلا من enjectivevalueofseleditim. ثم منذ أنت مصدر البيانات، يجب أن تكون قادرا على الاتصال بنفسك comboBox:objectValueForItemAtIndex:
طريقة.