Передача переменных между контроллерами представлений
Я использую эту функцию для переключения между представлениями в Xcode 4.3.
[self performSegueWithIdentifier:@"NextView" sender:self];
Я хотел бы передать некоторые параметры между страницами. Как я могу это сделать?
Ответы
Ответ 1
После performSegueWithIdentifier:sender:
ваш контроллер вида вызовет
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
Предполагая, что ваш новый контроллер просмотра имеет некоторые свойства:
if ([[segue identifier] isEqualToString:@"NextView"]) {
MyViewController *myVC = [segue destinationViewController];
myVC.propertyToSet = // set your properties here
}
Ответ 2
Этот вопрос имеет очень хорошее и правильное объяснение передачи данных между диспетчерами:
Передача данных между диспетчерами просмотров
Ответ 3
Вот ответ от Pfitz, но я сделал это немного легче понять для людей, которые новичок в Objective-C, используя пример:
-
В файле destinationViewController.h добавьте параметр свойства для переменной, чтобы получить значение из вашего исходного файла controller.m.
@property (nonatomic) int billIdReceivingVote;
-
Импортируйте файл destinationViewController.h в файл sourceViewController.m:
// VOLViewController.m
#import "VOLVoteViewController.h
-
Добавьте prepareForSegue
метод в файл sourceViewController.m и передайте переменные
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
VOLVoteViewController *myDestinationViewController = [segue destinationViewController];
// myDestinationViewController.variable = sourceViewController variabe
myDestinationViewController.billIdReceivingVote = [self.idOfBillSelected intValue];
}