Мой код, который обычно работает нормально для передачи объекта другому контроллеру представления, не работает, когда контроллер представления находится в другой раскадровке.
Мой код загружает правильный контроллер представления, встроенный в его контроллер навигации, но без любые данные. (Объект данных равен nil в месте назначения V C).
Вот код, который я пытаюсь использовать;
UIStoryboard *sb2 = [UIStoryboard storyboardWithName:@"secondSB" bundle:nil];
UINavigationController* nav = [sb2 instantiateViewControllerWithIdentifier:@"userNav"];
userDetail *destVC = (userDetail * )nav.topViewController;
NSLog(@"user name%@",user.name);//Logs name showing the user is not empty
destVC.user = user;
[self presentViewController:nav animated:YES completion:nil];
Выше загружен V C с нет данных.
Я могу передать объект данных в V C, если я представляю V C напрямую без контроллера навигации. Но в этом случае я теряю необходимые мне функции навигации.
UIStoryboard *sb2 = [UIStoryboard storyboardWithName:@"secondSB" bundle:nil];
userDetail *destVC = [sb2 instantiateViewControllerWithIdentifier:@"userDetail"];
NSLog(@"user name%@",user.name);//Logs name showing the user is not empty
destVC.user = user;
[self presentViewController:destVC animated:YES completion:nil];
Что может быть не так с приведенным выше кодом и какой код использовать.
Редактировать:
Я могу передать обычный объект, такой как String, в V C, встроенный в nav. Или я могу передать пользовательский объект в V C, когда он не встроен в nav. Я просто не могу передать пользовательский объект, такой как пользователь, или я создал другой объект NSObject для тестирования в V C, когда он встроен в навигационную систему. Возможно, это странный сбой при использовании другой раскадровки.
Edit 2
Вот объектный код для облегченной версии пользователя, которую я создал на случай, если что-то было неправильно с исходным объектом пользователя:
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface lightUser : NSObject
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSNumber * userid;
@property (nonatomic, retain) NSString * descript;
@end
Это свойство в V C:
#import "lightServer.h"
//in interface
@property (weak, nonatomic) lightUser* user;
Следующий код в ViewDidLoad не оказывает никакого влияния, и пользователь появляется как ноль:
self.user.name = @"Hello there";//
po self.user.name
в отладчике показывает ноль po self.user
в отладчиках показывает ноль