Ios 创建按钮的方法
我有自定义按钮类“EHCheckBox”。我的应用程序中有很多按钮,所以我尝试优化我的代码,并在一行而不是10行中创建按钮。在我看来,在viewDidLoad中,我调用方法witch call method来创建我的按钮Ios 创建按钮的方法,ios,objective-c,uibutton,subview,Ios,Objective C,Uibutton,Subview,我有自定义按钮类“EHCheckBox”。我的应用程序中有很多按钮,所以我尝试优化我的代码,并在一行而不是10行中创建按钮。在我看来,在viewDidLoad中,我调用方法witch call method来创建我的按钮 -(void)viewDidLoad { ..... [self buttons]; ..... } -(void)buttons { [self addNewBut:pcswitch Title:@" Switch" Column:3 Positio
-(void)viewDidLoad
{
.....
[self buttons];
.....
}
-(void)buttons
{
[self addNewBut:pcswitch Title:@" Switch" Column:3 Position:5 Dropable:NO Hide:NO]
}
-(void)addNewBut:(EHCheckBox*)checkBoxName Title:(NSString*)checkBoxTitle Column:(int)checkBoxColumn Position:(int)checkBoxPosition Dropable:(BOOL)checkBoxDropable Hide:(BOOL)hide
{
checkBoxName = [EHCheckBox buttonWithType:UIButtonTypeCustom];
[checkBoxName setTitle:NSLocalizedString(checkBoxTitle, @"") forState:UIControlStateNormal];
checkBoxName.hidden = hide;
if (checkBoxDropable) {
[checkBoxName setBackgroundImage:[UIImage imageNamed:@"CheckButton1.png"] forState:UIControlStateNormal];
[checkBoxName setBackgroundImage:[UIImage imageNamed:@"CheckButtonSelect1.png"] forState:UIControlStateSelected];
}else{
[checkBoxName setBackgroundImage:[UIImage imageNamed:@"CheckButton.png"] forState:UIControlStateNormal];
[checkBoxName setBackgroundImage:[UIImage imageNamed:@"CheckButtonSelect.png"] forState:UIControlStateSelected];
}
int firstColX = 45;
int firstColY = 125;
int width = 140;
int height = 36;
int widhtTwo = 18;
int x = firstColX + (checkBoxColumn - 1)*(width+widhtTwo);
int y = firstColY + (checkBoxPosition - 1)*(height);
checkBoxName.frame = CGRectMake(x, y, 140, 50);
[self.view addSubview:checkBoxName];
}
hide=是,因为我有其他方法可以取消隐藏按钮,但它们不起作用,因为在视图中,我的按钮是nil,我不明白为什么?也许我的方法应该返回这些按钮?谢谢。我无法理解您的目标和代码,但我确实建议使用类别。在这种情况下,系统应该看起来更好、更有条理 例如,您可以采用这种方法
#import <UIKit/UIKit.h>
@interface UIButton (Factory)
+ (UIButton*)buttonWithTitle:(NSString*)title column:(int)column position:(int)position dropable:(BOOL)dropable hide:(BOOL)hide;
@end
您可以按如下方式使用此类别。您需要导入#导入“UIButton+Factory.h”
一张便条。如果将
0
传递到列和位置,则按钮将假定为负x
和y
。因此,你不会看到它 在addNewBut:…
方法的开头设置一个断点,然后从那里开始。@dan78“…鉴于我的按钮为零…”这些,意味着我使用了调试。pcswitch
?你的代码启发了我,我编写了类的构造函数,都很有效,非常感谢!我不想一直写addSubView。。。所以我对这些方法进行了现代化,但是我有一些关于选择器的问题,它一直无法被识别,因为我知道它试图在我的视图中调用,我的方法initWithTitle:(NSString*)checkBoxTitle列:(int)checkBoxColumn位置:(int)checkBoxPosition Dropable:(BOOL)checkBoxDropable隐藏选择器:(SEL)action viewController:对不起,你能解释一下你的意思吗?我不明白…@RomanSimenok
#import "UIButton+Factory.h"
@implementation UIButton (Factory)
+ (UIButton*)buttonWithTitle:(NSString*)title column:(int)column position:(int)position dropable:(BOOL)dropable hide:(BOOL)hide {
UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom];
//[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[button setTitle:NSLocalizedString(title, @"") forState:UIControlStateNormal];
[button setHidden:hide];
if (dropable) {
[button setBackgroundImage:[UIImage imageNamed:@"CheckButton1.png"] forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"CheckButtonSelect1.png"] forState:UIControlStateSelected];
} else {
[button setBackgroundImage:[UIImage imageNamed:@"CheckButton.png"] forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"CheckButtonSelect.png"] forState:UIControlStateSelected];
}
int firstColX = 45;
int firstColY = 125;
int width = 140;
int height = 36;
int widhtTwo = 18;
int x = firstColX + (column - 1)*(width+widhtTwo);
int y = firstColY + (position - 1)*(height);
button.frame = CGRectMake(x, y, 140, 50);
return button;
}
@end
UIButton* button = [UIButton buttonWithTitle:@"test" column:1 position:1 dropable:YES hide:NO];
[viewWhereYouWantToAddTheButton addSubview:button];