Używam tej funkcji do przełączania widoków w Xcode 4.3.Przekazywanie zmiennych między kontrolerami widoku
[self performSegueWithIdentifier:@"NextView" sender:self];
Chciałbym przekazać niektóre parametry między stronami. Jak mogę to zrobić?
Używam tej funkcji do przełączania widoków w Xcode 4.3.Przekazywanie zmiennych między kontrolerami widoku
[self performSegueWithIdentifier:@"NextView" sender:self];
Chciałbym przekazać niektóre parametry między stronami. Jak mogę to zrobić?
Po performSegueWithIdentifier:sender:
Twój widok kontroler będzie zadzwonić
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
zakładając, że nowy kontroler widok ma jedne właściwości do ustawienia:
if ([[segue identifier] isEqualToString:@"NextView"]) {
MyViewController *myVC = [segue destinationViewController];
myVC.propertyToSet = // set your properties here
}
, więc ustawiam właściwość tak, jak powiedziałeś i jak mogę odczytać wartość z tej właściwości. A także, co jeśli muszę przekazać wiele zmiennych do następnego widoku? – bla0009
Dla wielu zmiennych użyj wielu właściwości i odczytaj z właściwości use ... = self.property (w twoim widoku kontrolera, w którym zdefiniowałeś tę właściwość) – Pfitz
Rozumiem to, ale nie jestem pewien jak uzyskać te dane w " NextView ". – bla0009
To pytanie ma bardzo ładny i poprawnego wyjaśnienia danych przepływających między widzenia regulatorów:
Tak, jest dobrze wyjaśnione na tej stronie, ale używają one pushViewController do zmiany widoku, ale chciałbym użyć performSegueWithIdentifier. – bla0009
Oto odpowiedź od Pfitz, ale zrobiłem to trochę łatwiejsze do zrozumienia dla ludzi, którzy są nowicjuszami w Objective-C za pomocą przykładu:
W pliku destinationViewController.h dodać ustawienie właściwości dla zmiennej 'otrzymać' wartość z pliku źródłowego controller.m
@property (nonatomic) int billIdReceivingVote;
importować destinationViewController.h do pliku sourceViewController.m:
// VOLViewController.m
#import "VOLVoteViewController.h
Dodaj prepareForSegue
metody do pliku sourceViewController.m i przekazać zmienne
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
VOLVoteViewController *myDestinationViewController = [segue destinationViewController];
// myDestinationViewController.variable = sourceViewController variabe
myDestinationViewController.billIdReceivingVote = [self.idOfBillSelected intValue];
}
nie u spróbował wykorzystać kontroler nawigacyjny zamiast. bardzo proste jest przekazywanie wartości – WaaleedKhan
nie, nie próbowałem kontrolera nawigacyjnego. Używam zwykłego przycisku i segue w scenorysie. – bla0009