(ich lerne derzeit iOS Entwicklung so in fortgeschrittenen meiner begrenzten Kenntnis entschuldige ich mich.)Wenn eine benutzerdefinierte Schaltfläche UILabel (Objective-C) aktualisieren wird nicht gedrückt
Was ich zu erreichen versuche, ist, dass Wenn Sie entweder die Additions- oder Subtraktionsschaltfläche drücken, wird die Beschriftung um eins erhöht und das Ergebnis wird durch die Beschriftung angezeigt. Ich habe Schwierigkeiten, das Ergebnis auf dem Etikett anzuzeigen.
Das ist meine ViewController.h Datei:
#import <UIKit/UIKit.h>
#import "StepperView.h"
@interface ViewController : UIViewController{
UILabel *valueLabel;
}
@end
Das ist meine ViewController.m Datei:
#import "ViewController.h"
#import "StepperView.h"
@interface ViewController()
@end
@implementation ViewController
- (void)viewDidLoad {
int w;
w = 0;
[super viewDidLoad];
StepperView *stepperView = [[StepperView alloc] initWithFrame:CGRectMake(0, 0, 300, 50)];
stepperView.center = self.view.center;
[self.view addSubview:stepperView];
// AddButton
UIButton *additionButton = [[UIButton alloc] initWithFrame:CGRectMake(195, 318, 100, 100)];
additionButton.frame = CGRectMake(stepperView.frame.size.width/2 + 50, stepperView.frame.size.height/2 - 25, 100, 50);
[self.view addSubview:additionButton];
// Subtraction button
UIButton *subtractionButton = [[UIButton alloc] initWithFrame:CGRectMake(195, 318, 100, 100)];
subtractionButton.frame = CGRectMake(stepperView.frame.size.width/2 - 150, stepperView.frame.size.height/2 - 25, 100, 50);
[self.view addSubview:subtractionButton];
// Label
valueLabel = [[UILabel alloc] initWithFrame:CGRectMake(195, 318, 100, 100)];
[valueLabel setTextColor:[UIColor redColor]];
[self.view addSubview:valueLabel];
}
@end
Das ist mein Delegierter und Protokoll:
StepperView.h
#import <UIKit/UIKit.h>
@protocol SwitchViewDelegate
- (void)switchViewValueChanged:(int)number;
@end
@interface StepperView : UIView
{
}
@property (nonatomic,weak) id<SwitchViewDelegate> delegate;
@end
Dies ist meine StepperView.m Datei
#import "StepperView.h"
@implementation StepperView
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
[self setup];
return self;
}
- (void)setup {
UIView *stepperView = [[UIView alloc] init];
stepperView.frame = CGRectMake(0, 0, 300, 40);
stepperView.backgroundColor = [UIColor colorWithRed:21/255.0 green:101/255.0 blue:192/255.0 alpha:1.0];
[self addSubview:stepperView];
// Add Button
UIButton *rightView = [[UIButton alloc] init];
rightView.frame = CGRectMake(stepperView.frame.size.width/2 + 50, stepperView.frame.size.height/2 - 20, 100, 40);
rightView.backgroundColor = [UIColor colorWithRed:33/255.0 green:150/255.0 blue:243/255.0 alpha:1.0];
[rightView setTitle:@"+" forState:UIControlStateNormal];
[rightView addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:rightView];
// Subtract Button
UIButton *leftView = [[UIButton alloc] init];
leftView.frame = CGRectMake(stepperView.frame.size.width/2 - 150, stepperView.frame.size.height/2 - 20, 100, 40);
leftView.backgroundColor = [UIColor colorWithRed:33/255.0 green:150/255.0 blue:243/255.0 alpha:1.0];
[leftView setTitle:@"-" forState:UIControlStateNormal];
[leftView addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:leftView];
// Label
UILabel *valueLabel = [[UILabel alloc] initWithFrame:CGRectMake(stepperView.frame.size.width/2, stepperView.frame.size.height/2, 100, 100)];
[valueLabel setText:@"10"];
[valueLabel setTextColor:[UIColor redColor]];
[self addSubview:valueLabel];
}
- (void)buttonPressed:(id)sender{
UIButton *button = (UIButton *) sender;
NSString *title = button.titleLabel.text;
if([title isEqualToString:@"-"]) {
NSLog(@"MINUS");
} else {
NSLog(@"PLUS");
}
// NSLog(@"%@",title);
}
@end
Ich sehe keinen Code in Bezug auf den Text valuelabel zu aktualisieren. –
Ich sehe zwei "valueLabel". Ich bin mir nicht sicher, was man wirklich ändern sollte. Sie haben den Delegaten des Objekts "StepperView" nicht festgelegt, und seine Delegatmethode 'switchViewValueChanged:' wird nicht aufgerufen. Es gibt keinen Code, wenn Sie den Text nur 'NSLog()' einstellen – Larme