Konfigurowanie kontrolera widoku szczegółowego za pomocą segue

TŁO:

Mam niestandardową klasę UIViewController, w której zapełniam MKMapView niestandardowymi adnotacjami. Gdy użytkownik wybierze adnotację, zostaną wyświetlone szczegóły dotyczące tej adnotacji, a także przycisk umożliwiający użytkownikowi wybranie i wyświetlenie kolejnego kontrolera UIViewController ze szczegółami dotyczącymi tego punktu na mapie.

Kod:

Inicjalizuję nowy kontroler widoku, tworząc klasę z identyfikatorem użytkownika (Uwaga:- (id) initWithUserID:(NSInteger) userID; jest zadeklarowany w pliku nagłówkowym SecondViewController:

<code>@interface SecondViewController ()

@property (nonatomic) NSInteger userID;

@end



@implementation RainFallDetailedViewController

@synthesize userID = _userID;


- (id) initWithUserID:(NSInteger) userID{

_userID = userID;
NSLOG(@"UserID: %i",self.userID); //correctly displays user id

return self;
}

- (void) viewWillAppear{
NSLOG(@"UserID: %i",self.userID); //userid is now 0
</code>

Tworzenie kontrolera widoku odbywa się po naciśnięciu przycisku, a następnie natychmiast wykonuje segue do drugiego kontrolera widoku:

<code>- (void)mapView:(MKMapView *)mapView 
annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {

if ([(UIButton*)control buttonType] == UIButtonTypeInfoLight){ //I'm looking for recognition of the correct button being pressed here.
    //SecondViewController is the second view controller with the detailed information about the map point.  
    //DataPoint is a custom class that contains the details regarding the map point.
    SecondViewController *detailedMapController = [[SecondViewController alloc] initWithUserID:((DataPoint *)view.annotation).userID]; 

    NSLOG(@"UserID: %i", ((DataPoint *)view.annotation).userID); //correctly displays userID

    [self performSegueWithIdentifier:@"PinDetail" sender:detailedMapController];


} 
}
</code>

PROBLEM:

Za pomocą NSLOG jestem w stanie potwierdzić, że wartość jest przekazywana poprawnie podczas tworzenia klasy. Jednak kiedy idę do korzystania z nieruchomościuserID później w kodzie (viewWillAppear) nie mogę już z niego korzystać. Zakładam, że jest problem z pamięcią, o który nie dbam, ale nie mogę tego zrozumieć. Jak mogę się upewnić, że wartości / obiekty, które przechodzę do klasy po utworzeniu pozostają tam?

Uwaga boczna: pierwotnie próbowałem, mijającPinData obiekt, ale wpadłem na ten sam problem, więc wiem, że nie jest to problem NSIntegera. Podążyłem też za sugestią NoaprepareForSegue jednak mam ten sam problem przedstawiony powyżej

questionAnswers(1)

yourAnswerToTheQuestion