单击ui按钮时如何向函数发送值

时间:2010-10-29 13:08:08

标签: iphone uibutton

NSString *name = @"John";

点击uibutton时,我需要传递上面的变量值。目前我创建了如下的uibutton:

sendButton = [[UIButton alloc] initWithFrame:CGRectMake(170, 350, 90, 30)];

[sendButton setTitle:@"YES!" forState:UIControlStateNormal];

[sendButton addTarget:self action:@selector(sendAlert forControlEvents:UIControlEventTouchUpInside];

[sendButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

sendButton.backgroundColor = [UIColor whiteColor];

[popoverView addSubview:sendButton];

[sendButton release];

当我点击上面的按钮时,它会调用方法,但我想将变量(名称)传递给函数...

请指导我搞定....

4 个答案:

答案 0 :(得分:2)

Sherry的答案在技术上是正确的,但我不确定它是否是针对潜在设计模式问题的解决方案。

你的变量'name'会改变吗?如果是这样,它是如何改变的(字段,列表选择......等)?

如果dosnt更改,那么你应该#define它,如果它确实改变了(用户输入),那么你的事件应该是查看数据源,UI字段或实例变量。

答案 1 :(得分:1)

您可以创建自定义按钮作为UIButton的子类 您可以为该

创建属性

例如

<。>文件中的

@interface CustomButton : UIButton
{
    NSString *name;

}

@property (nonatomic,retain) NSString *name;
@end

.m文件

@implementation CustomButton

@synthesize name;

- (void)dealloc{

    [name release];

    [super dealloc];
}

@end

现在您要创建按钮的代码

sendButton = [[CustomButton alloc] initWithFrame:CGRectMake(170, 350, 90, 30)];

[sendButton setTitle:@"YES!" forState:UIControlStateNormal];

[sendButton setName:@"John"];

[sendButton addTarget:self action:@selector(sendAlert forControlEvents:UIControlEventTouchUpInside];

[sendButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

sendButton.backgroundColor = [UIColor whiteColor];

[popoverView addSubview:sendButton];

[sendButton release];

现在在被触发的方法中,您可以使用名为

的按钮属性访问它

答案 2 :(得分:1)

虽然您可以继承UIButton并为其添加属性等,但最好在popoverView类中将name设为实例变量。然后sendAlert方法也可以访问它。每次需要将数据传递给它们时,您都不希望对控件进行子类化。

答案 3 :(得分:1)

您不需要继承UIButton。

为popoverView的类添加一个NSString属性(你正在关注MVC吗?popoverView应该是一个控制器)。然后在将其添加到子视图之前,将第一个对象中的NSString分配给popoverView中的NSString。完成了!

如果您要在应用程序的其他位置使用该名称,也可以考虑使用通知。

如果您不清楚发布整个代码,我会为您修复代码:)