【发布时间】:2016-06-29 14:11:14
【问题描述】:
(我目前正在学习 iOS 开发,因此在我知识有限的情况下,我深表歉意。)
我想要完成的是,每当您按下加法或减法按钮时,标签都会增加一,并按标签显示结果。我无法在标签中显示结果。
这是我的 ViewController.h 文件:
#import <UIKit/UIKit.h>
#import "StepperView.h"
@interface ViewController : UIViewController{
UILabel *valueLabel;
}
@end
这是我的 ViewController.m 文件:
#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
这是我的委托和协议:
StepperView.h
#import <UIKit/UIKit.h>
@protocol SwitchViewDelegate
- (void)switchViewValueChanged:(int)number;
@end
@interface StepperView : UIView
{
}
@property (nonatomic,weak) id<SwitchViewDelegate> delegate;
@end
这是我的 StepperView.m 文件
#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
【问题讨论】:
-
我没有看到与更新 valueLabel 文本相关的代码。
-
我看到两个“valueLabel”。我不确定哪一个应该真正改变。你没有设置
StepperView对象的委托,它的委托方法switchViewValueChanged:没有被调用。设置文字时没有代码,只有NSLog()
标签: ios objective-c uiview uibutton uilabel