سؤال

للحياة مني، أنا مرتت باستمرار مع 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: طريقة.

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