Как отправить значение в функцию при нажатии на кнопку пользовательского интерфейса - PullRequest
1 голос
/ 29 октября 2010
NSString *name = @"John";

Мне нужно передать указанное выше значение переменной, когда вы нажимаете на кнопку.В настоящее время я создал 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 ]

2 голосов
/ 29 октября 2010

Шерри ответит технически правильно, но я не уверен, является ли это решением для базового шаблона проектирования.

Ваша переменная 'name' когда-нибудь изменится?и если да, то как это изменилось (поле, выбор списка и т. д.)?

Если это не изменится, вы должны #define сделать это, если оно действительно изменится (пользовательский ввод), тогда ваше событие должно смотреть на источник данных, поле пользовательского интерфейса или переменную экземпляра.

1 голос
/ 29 октября 2010

Вам не нужно создавать подкласс UIButton.

добавить свойство NSString в класс popoverView (вы следуете MVC, верно? PopoverView должен быть контроллером).Затем, перед добавлением его в подпредставление, присвойте строку NSString в первом объекте строке NSString в вашем popoverView.готово!

вы также можете рассмотреть возможность использования уведомлений, если вы собираетесь использовать это имя в других местах приложения.

Если вам не ясно, опубликуйте весь код, и я исправлюкод для вас:)

1 голос
/ 29 октября 2010

Хотя вы можете создать подкласс UIButton и добавить в него свойства, и т. Д., И т. Д., Вам будет лучше сделать имя переменной экземпляра в классе popoverView. Метод sendAlert также сможет получить к нему доступ. Вы не хотите создавать подклассы управления каждый раз, когда вам нужно передать им данные.

1 голос
/ 29 октября 2010

вы можете создать пользовательскую кнопку как подкласс UIButton Вы можете создать свойства для этого

например

в .h файле

@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];

теперь в вызываемом методе вы можете получить к нему доступ, используя свойство этой кнопки с именем name

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...