سؤال

تحيات،

لدي مشروع طلب معين حيث قمت بإنشاء فئة NSOBJECT تسمى "SquareClass". الآن، من منشئ واجهة XCode، أريد أن أكون قادرا على إنشاء إصدار "SquareClass" في كائن مربع مع نطاق عالمي، بهذه الطريقة، عندما أقوم بإنشاء إجراءات من أي عناصر تحكم UI (أي TextBoxes، أزرار وغيرها ... )، أريد أن أكون قادرا على الاتصال بطرق هذا الكائن داخل تلك الإجراءات.

مثال:

(void)MyAction1:(id)color
{
   [square setColor:color];
}

(void)MyAction2:(id)width
{
   [square setWidth:width];
}

كما ترون، يحتاج الكائن المربع إلى النطاق العالمي. قد يبدو هذا سهلا أو ربما الطريقة الخاطئة للقيام بذلك لبعضنا. لقد نظرت من خلال الويب، ووجدت كيندا طريقة لملف .nib، وليس لملف .xib.

إن أي اقتراح سيكون موضع تقدير كبير. شكرا جزيلا.

يوهان.

ملاحظة: هذا هو أول مشاركتي على الإطلاق، كن متسامحا.

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

المحلول

أولا، ملف NIB هو، لجميع النوايا والأغراض، نفس ملف XIB؛ انها مجرد إصدار مترجم من ملف XIB.

الآن، لإنشاء كائن مشتق من NSOBJECT في NIB / XIB، ما عليك سوى سحب NSOBJECT من نافذة المكتبة في ملفك. ثم على مفتش الهوية تغيير الفصل إلى الفصل المخصص الخاص بك.

إذا حددت الأساليب مثل هذا:

- (IBAction)myAction:(id)sender

ستكون قادرا على ربطها في باني واجهة.

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

يجب عليك أيضا التأكد من أنك تفهم طريقة العرض والتحكم والكائنات النموذجية. هناك الكثير من الأدب في هذا.

نصائح أخرى

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

- (IBAction) pinSelected: (id)sender;

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

حظ سعيد!

لقد وجدت كيفية القيام بما أحتاج إليه والتي لم يتم ذلك ضمن ملف XIB. إنها طريقة أبسط مما اعتقدت، في EventHough اقتراحات أعلاه صالحة.

من أجل استخدام الكائن المربع، كان علي فقط الرجوع إلى ملف الرأس:

 #import "square.h"

في SquareuiviewController.h وإضافة مرجع إلى كائن مربع:

Square *square;

ثم في Squareuicontroller.m، لدي فقط تخصيص / تهيئة الكائن المربع قبل القيام بأي شيء آخر:

(IBAction)myInit
{
square = [[Square alloc] init];
}

الآن يمكنني استخدام طرق المشاركة الأولى وفويلا!

ملاحظة: النقاد، النار!

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