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];
当我点击上面的按钮时,它会调用方法,但我想将变量(名称)传递给函数...
请指导我搞定....
答案 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。完成了!
如果您要在应用程序的其他位置使用该名称,也可以考虑使用通知。
如果您不清楚发布整个代码,我会为您修复代码:)