Передача 2 строк через делегата - PullRequest
0 голосов
/ 30 марта 2011

Мне интересно, как я могу передать 2 строки через моего делегата? Я хочу передать его из viewcontroller2 (SelectStationViewController) в viewcontroller1 (SubGabViewController).

У меня сейчас работает, просто передаю 1 строку (NSString * test).

Вот код, который я настроил:

// in SelectStationViewController.h
@protocol SelectStationViewControllerDelegate;
...
@interface ... {
    id <SelectStationViewControllerDelegate> delegate;
}
@property (nonatomic, assign) id <SelectStationViewControllerDelegate> delegate;
@end

@protocol SelectStationViewControllerDelegate
- (void)selectStationViewControllerDidFinish:(NSString *)selectedStationName;
@end

// in SelectStationViewController.m
NSString *test = [[copyListOfItems objectAtIndex:indexPath.row] objectForKey:@"hash"];
[delegate selectStationViewControllerDidFinish:test];

// in SubGabViewController.h
@interface...<SelectStationViewControllerDelegate>

// in SubGabViewController.m

// set selectedStationName as currentStationName
- (void)selectStationViewControllerDidFinish:(NSString *)selectedStationName
{
    NSLog(@"selectedStationName is = %@", selectedStationName);
    [self setCurrentStationName:selectedStationName];
}

Чтобы передать делегату 2 строки, я бы сделал что-то подобное?

// in SelectStationViewController.m
NSString *test = [[copyListOfItems objectAtIndex:indexPath.row] objectForKey:@"hash"];
NSString *test2 = [[copyListOfItems objectAtIndex:indexPath.row] objectForKey:@"linehash"];
[delegate selectStationViewControllerDidFinish:test];
[delegate selectLineViewControllerDidFinish:test2];

а затем настроить другую функцию, подобную этой?

- (void)selectStationViewControllerDidFinish:((NSString *)selectedStationName;
- (void)selectLineViewControllerDidFinish:((NSString *)selectedLineName;

Ответы [ 2 ]

2 голосов
/ 30 марта 2011

Просто напишите метод делегата в SubGabViewController, который получает 2 строки в своих параметрах вместо одной, и вызовите его из SelectStationViewController:

- (void) functionName:(NSString*)str1 string2:(NSString*)str2;

[delegate functionName:stringtogive1 string2:stringtogive2];

Вот и все, ребята; -)

0 голосов
/ 30 марта 2011

В качестве другого варианта вы можете передать массив строк через ваш метод делегата, например:

- (void)selectStationViewControllerDidFinish:(NSArray *)selectedStations;

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

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