استدعاء الإجراءات التي تم الحصول عليها من الزر

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

  •  02-10-2019
  •  | 
  •  

سؤال

لدي المتطلبات التالية:

  1. الحصول على الإجراء المرتبط بـ NSButton استخدام : - (SEL)action
  2. استدعاء الإجراء الذي تم الحصول عليه.

هل يمكننا أداء 2nd pt. عموما نحن ندعو إجراء مثل هذا- [self abc:nil] مجرد التفكير إذا استطعنا استدعاء الطريقة التي تم الحصول عليها من 2nd Pt. بنفس الطريقة!

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

المحلول

محاولة:

SEL actionSelector = [button action];
[self performSelector: actionSelector withObject:nil];

نصائح أخرى

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

الكائن الأكثر ترجيحًا الذي تريد إرسال رسالة الإجراء إلى هدف الزر ، لذا احصل على ذلك ، بنفس الطريقة التي حصلت بها على الإجراء ، وإرسال الرسالة إلى هذا الكائن. أو الأفضل من ذلك ، أرسل الزر أ performClick: رسالة; ؛ إذا كنت ترغب في محاكاة المستخدم النقر فوق الزر ، فهذه هي الطريقة للقيام بذلك.

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