Какао Xcode - как передать переменную в функцию - PullRequest
1 голос
/ 16 декабря 2009

Я пытаюсь выяснить, как передать переменную (в моем случае имя хоста) функции, которую я создал из программно вставленного «пункта меню».

#function

-(void)goToTerminal:(NSString *)hostname {
    NSString *s = [NSString stringWithFormat:@"tell application \"Terminal\" to do script \"ssh root@%@\"", hostname];
    NSAppleScript *as = [[NSAppleScript alloc] initWithSource: s];
    [as executeAndReturnError:nil];
}

# adding menu item in another function
[NSString *hostname = [NSString stringWithString:@"some.host"]];
NSMenuItem *subhostline = [[[NSMenuItem alloc] initWithTitle:sshtohost action:@selector(goToTerminal:) keyEquivalent:@""]autorelease];
[subhostline setTarget:self];

1 Ответ

2 голосов
/ 16 декабря 2009

NSMenuItem имеет методы -tag и -setTag:, которые можно использовать для связывания произвольного целого числа с элементом меню. Это целое число может легко быть индексом имени хоста в массиве.

Методы назначения / действия принимают один аргумент - отправителя. Отправитель - это элемент пользовательского интерфейса, который запускает метод действия для цели. Чтобы сохранить разделение, присущее MVC, вы обычно не помещаете данные непосредственно в элементы пользовательского интерфейса; пользовательский интерфейс - слой представления - выполняет действие с контроллером, который затем выбирает соответствующий фрагмент данных из модели и делает все, что ему нужно.

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