почему я не могу передавать переменные между двумя контроллерами представления таким образом? - PullRequest
2 голосов
/ 13 июля 2011

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

В первом контроллере представления я делаю это, как только пользователь нажимает на кнопку, чтобы перевернуть страницу:

- (IBAction) showMyWeather : (id)sender {

WeatherApp *weather = [[WeatherApp alloc] initWithNibName:nil bundle:nil];
weather.zipcode = placemarkZip; //this one seems not to be doing the job
weather.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:weather animated:YES];

}

И в WeatherApp я хотел бы прочитать сейчас почтовый индекс, который объявлен в этом контроллере представления .h:

@interface WeatherApp : UIViewController{

IBOutlet UIButton *done;
MKPlacemark *zipcode;
}

@property (nonatomic, retain) MKPlacemark *zipcode;

Как я могу использовать этот код для передачи этого почтового индекса в WeatherApp?Спасибо!

1 Ответ

0 голосов
/ 13 июля 2011

Да, это прекрасный способ передачи информации в новый объект.

В качестве альтернативы, вы можете создать собственный инициализатор для WeatherApp, например

- (id)initWithZipCode:(NSString *)zip;

, а затем в файле реализации., это может выглядеть так:

- (id)initWithZipCode:(NSString *)zip
{
    self = [super init];
    [self setZipcode:zip];
    return self;
}

Наконец, вы можете создать экземпляр класса следующим образом:

- (IBAction)showMyWeather:(id)sender
{
    WeatherApp *weather = [[WeatherApp alloc] initWithZipCode:placemarkZip];
    [weather setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
    [self presentModalViewController:weather animated:YES];
    [weather release]; // No longer needed with ARC... just sayin'
}

Наконец, если вы собираетесь продолжать передавать информацию по мересделать выше, я бы спросил, почему вы используете initWithNibName:bundle:.Если вы просто собираетесь передать nil обоим, почему бы просто не использовать [[WeatherApp alloc] init]?

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