я не могу получить свойства впрыскивается в контроллерах просмотреть с помощью XIBs с initWithNibName:bundle:
Typhoon не инъекционного свойство (без раскадровки)
Пример:
Это моя сборка:
@implementation AppAssembly
- (ViewControllerC *)viewControllerC
{
return [TyphoonDefinition withClass:[ViewControllerC class]
configuration:^(TyphoonDefinition *definition) {
[definition injectProperty:@selector(name) with:@"Injected string"];
}];
}
@end
ViewControllerA код:
@implementation ViewControllerA
- (IBAction)buttonAction:(id)sender
{
ViewControllerB *viewControllerB = [[ViewControllerB alloc] initWithNibName:@"ViewControllerB" bundle:nil];
[self.navigationController pushViewController:viewControllerB animated:YES];
}
@end
ViewControllerB код:
@implementation ViewControllerB
- (IBAction)buttonAction:(id)sender
{
ViewControllerC *viewControllerC = [[ViewControllerC alloc] initWithNibName:@"ViewControllerC" bundle:nil];
[self.navigationController pushViewController:viewControllerC animated:YES];
}
@end
ViewControllerC код:
@interface ViewControllerC : UIViewController
@property (copy, nonatomic) NSString *name;
@end
@implementation ViewControllerC
- (void)viewDidLoad
{
[super viewDidLoad];
// Why is this not being injected?
self.title = self.name;
}
@end
AppDelegate код:
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
ViewControllerA *rootViewController = [[ViewControllerA alloc] initWithNibName:@"ViewControllerA" bundle:nil];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = navigationController;
[self.window makeKeyAndVisible];
return YES;
}
@end
Я уже проверил образцы, и они отличаются от такого подхода. Пожалуйста, скажите мне, что я делаю неправильно?
Спасибо.
Извините, но этот код не компилируется. В вашем примере вы добавляете определение для ViewControllerB и устанавливаете для использования инициализатора с «ViewControllerC» nib, это нормально? Помните, что моя проблема заключается в том, что я хочу ввести свойство 'name' в ViewControllerC при нажатии от B до C. – fernandospr
Извините, я просто набрал его быстро в StackOverflow - я думал, этого может быть достаточно, чтобы вы могли получить картину. Я отредактировал его сейчас. Если что-то неясно, сообщите мне, какая часть. , , Да, когда вы нажимаете «B» на «C», если вы хотите, чтобы вложенные зависимости были введены, вы должны спросить «Тайфун» для «C» –
@fernandospr. Проверяли только, есть ли у вас проблемы, и заметили, что после редактирования (Я думал), ответ ничего не изменился (он не должен был спасти). Я снова редактировал. Извиняюсь за это. –