На этот вопрос ответили много, но ни одно из опубликованных решений для меня не работает. Поэтому я подумал, что сделаю это. У меня есть boolean posNeg, и каждый раз, когда его значение изменяется, заголовок трех кнопок должен меняться, но они этого не делают.Измените текст UIButton, не созданный в Interface Builder
- (void) posNegButtonPressed{
if (posNeg) {
posNeg = NO;
[oneButton setTitle:@"One" forState:UIControlStateNormal];
[xButton setTitle:@"X" forState:UIControlStateNormal];
[x2Button setTitle:@"X2" forState:UIControlStateNormal];
NSLog(@"Was True");
}
else{
posNeg = YES;
[oneButton setTitle:@"-One" forState:UIControlStateNormal];
[xButton setTitle:@"-X" forState:UIControlStateNormal];
[x2Button setTitle:@"-X2" forState:UIControlStateNormal];
NSLog(@"Was False");
}
}
В NSLog находятся называют, так что я получаю контрастную последовательность «правда» и «Был False», но название каждого из кнопок никогда не обновляется.
Дополнительная информация:
Кнопки были инициализированы следующим
Заголовочный файл
Реализация файла
@implementation ...
- (id)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if (self) {
[self setUpButton : oneButton : UIButtonTypeRoundedRect : @"One" :UIControlStateNormal : @"Helvetica-Bold" : 20
: width - width/4 + 2 * initialWidth : height/3 + 6 * (buttonHeight + spaceBetweenButtons)
: width/4 - 2 * initialWidth : buttonHeight : @selector(oneButtonPressed) : UIControlEventTouchUpInside];
[self setUpButton : xButton : UIButtonTypeRoundedRect : @"X" :UIControlStateNormal : @"Helvetica-Bold" : 20
: width - width/4 + 2 * initialWidth : height/3 + 7 * (buttonHeight + spaceBetweenButtons)
: width/4 - 2 * initialWidth : buttonHeight : @selector(xButtonPressed) : UIControlEventTouchUpInside];
[self setUpButton : x2Button : UIButtonTypeRoundedRect : @"X\u00B2" :UIControlStateNormal : @"Helvetica-Bold" : 20
: width - width/4 + 2 * initialWidth : height/3 + 8 * (buttonHeight + spaceBetweenButtons)
: width/4 - 2 * initialWidth : buttonHeight : @selector(x2ButtonPressed) : UIControlEventTouchUpInside];
}
- (void) setUpButton: (UIButton *) button : (UIButtonType *) buttonType : (NSString *) title : (UIControlState *) controlState : (NSString *) font : (int) size : (double) xPos (double) yPos : (double) width : (double) height : (SEL) selectorMethod :(UIControlEvents *) controlEvent
{
button = [UIButton buttonWithType:buttonType];
button.frame = CGRectMake(xPos, yPos, width, height);
[button setTitle:title controlState ];
[button addTarget:self action: selectorMethod forControlEvents:controlEvent];
[self addSubview:button];
button.titleLabel.font = [UIFont fontWithName:font size:size];
}
@end
Я попытался [mybutton setNeedsDisplay]
, но это не сработало ни
Любые идеи? Правильно ли мои кнопки не инициализированы?
Редактировать 1: Добавлено NSLog(@"%@ %@ %@", oneButton, xButton, x2Button);
до последней строки в initWithFrame
в соответствии с просьбой и получено (ноль) (null) (null). Кто-нибудь знает, почему это так?
ли кнопка инициализации правильно .... и, пожалуйста, проверьте condtions ... – IronManGill
Сделайте одну вещь в вашем методе initWithFrame поставить эту последнюю строку. NSLog (@ "% @% @% @", oneButton, xButton, x2Button). Я сомневаюсь в ссылке. Поэтому проверьте и сообщите нам, что у вас получилось. – CRDave
@CRDave Я сделал то, что вы просили, и получил (null) (null) (null). Что я делаю не так? – josealvarado111