سؤال

ولدي UIButton على UIView. أريد أن الرقم برمجيا من الصورة التي لعرضه داخل الزر عندما يتم عرض طريقة العرض. لقد تنقضها طريقة drawRect في UIView واستخدام setImage لعرض الصورة المطلوبة. ومع ذلك، عندما يعرض الرأي، وأحيانا يرسم الصورة المطلوبة، وأحيانا لا. لا بد لي من لمس أي مكان في عرض للصورة لتظهر في زر. الرجاء المساعدة!

وهنا هو الأسلوب drawRect للرأي.

- (void)drawRect:(CGRect)rect
{
[myButton setImage:[UIImage imageNamed:@"myImage.png"] forState:UIControlStateNormal];
}

والسلكية كل شيء حتى IB بشكل صحيح. أنا لا أفهم لماذا تظهر الصورة / لا تظهر باستمرار. شكرا جزيلا.

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

المحلول

هل حقا لا تريد تجاوز drawRect.

والشيء الصحيح القيام به هو تنفيذ UIViewController، وتجاوز <لأ href = "http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html#// apple_ref / أورينت / instm / UIViewController / viewWillAppear: "يختلط =" نوفولو noreferrer "> viewWillAppear:

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.myButton setImage:[UIImage imageNamed:@"myImage.png"] forState:UIControlStateNormal];
};

نصائح أخرى

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

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

وشكرا للتوضيح. للأسف، هذا الرمز هو جزء من مشروع أكبر مع مطور آخر. I CAN NOT تغيير UIView الحالي إلى UIViewController. بدلا من ذلك، لقد غيرت الصورة الزر بطريقة أخرى. لقد غيرت الدولة الزر فقط قبل إضافة UIView إلى subview من ViewController امتلاك. أي: أنا أصدرت

[myButton setImage:[UIImage imageNamed:@"myImage.png"] forState:UIControlStateNormal];

وفقط قبل إضافة بلدي UIView باعتباره subView. أي:

[masterViewController.view addSubview:myView];

واضح، myButton هو جزء من MYVIEW. شكرا للمساعدة.

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