iPhone: أحاول استخدام بيان إذا كان الأمر غير يعمل بالنسبة لي

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

سؤال

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

أراهن أنه خطأ بسيط حقا صنعته، لكنني لا أستطيع العثور عليه.

أحاول إظهار تنبيه محدد مسبقا عندما يصل عدد صحيح إلى 50؛ هذا هو ما إذا كان العبارة التي أستخدمها في طريقة تحميل ViewDidID:

if(count == 50){
    [alert show];
}

عندما يصل عدد صحيح إلى 50، لا يحدث شيء. أين ذهبت خطأ؟

تم تغيير عدد صحيح مثل هذا في iBaction:

 count+=10;

إذا قمت بإزالة عبارة IF: فقط اترك التنبيه لإظهاره، فهو يعرض عند تحميل الأحمال. وبالتالي فإن التنبيه ليس هو المشكلة.

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

فكيف يمكنني مشاهدة عدد صحيح مع التعليمات البرمجية، وتنفيذ تنبيه متي عدد صحيح هو 50، ولكن ليس استدعاء التنبيه في الإجراء الذي يزيد عدد صحيح؟

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

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

المحلول

حاول إضافة

if(count == 50){
    [alert show];}

في نفس ibaction مباشرة بعد إضافة 10 إلى الاعتماد.

نصائح أخرى

عندما تقول

ولكن عندما يصل عدد صحيح إلى 50 لا شيء يحدث

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

يجب أن يكون هذا جيدا - الهدف - C هو طبقة رقيقة على رأس C، لذلك يجب أن تعمل بناء جملة C صالح. أي نوع من المتغير هو الاعتماد؟ تريد تحديد ذلك ك int, ، وليس nsnumber. NSNumber هو فئة تلتف رقما بحيث يمكن استخدامها ككائن موضوعي - C - لكن لا يمكنك مقارنتها باستخدام بناء الجملة ==.

امل ان يساعد!

تحقق من المراقبة القيمة الرئيسية

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

يحاول

NSLog(@"count is %d",count); 

ومعرفة ما إذا كانت المشكلة هناك. من الصعب القول ما إذا كان العد افسدت أو تنبيه، لكن المشكلة ليست مع بيانك إذا كان ذلك.

بعض الأشياء التي يجب تجربتها،

  • قم بتعيين نقطة انقطاع على بيان IF
  • تغيير بيان إذا ل count >= 50
  • هل تعول حقا int أو هل تعويم؟

أبسط إجابة: لديك كل الأشياء التي تزيد count انتقل إلى طريقة واحدة في وحدة التحكم الخاصة بك للقيام بذلك ولدي هذه الطريقة تحقق ما إذا كان الوقت قد حان لإظهار التنبيه.

الإجابة الأكثر تعقيدا والتي تنطوي على مشاهدة القيمة: مراقبة القيمة الرئيسية. وبعد يمكنك إعداد مراقب لمشاهدة القيمة والاستجابة للتنبيه عندما يضرب 50. ولكن هذا سيستغرق المزيد من التعليمات البرمجية ويكون أكثر تعقيدا وعلاوة علة من مجرد إدخال طريقة مركزية للتعامل مع السلوك.

أنا لا أفهم ذلك، لماذا لا يمكنك إظهار التنبيه في التعليمات البرمجية التي تزيد العداد؟ يحتاج JUT إلى مرجع إلى UialertView ... أو نشر إعلام، فإن رمز التنبيه القابضة يستمع إليه.

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

إذا كنت تريد ذلك للتحقق من العد في كل مرة تدفع فيها زر وزيادة العدد، فقم بذلك في IBaction.

يمكنك إجراء طريقة للتحقق من العداد مثل ذلك

-(BOOL) checkCounter
{
  return count == 50;
}

واتصل بها في الأزرار الخاصة بك كما لو كنت بعد زيادة ذلك:

if ([self checkCounter])
{
//do stuff when it's 50
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top