Публикация моего первого вопроса здесь, в stackoverflow! Надеюсь, мой вопрос ясен, вот он ...Передача данных с контроллера просмотра на первый контроллер детали, а затем на второй контроллер детализации
У меня есть контроллер навигации, встроенный в контроллер первого вида, который имеет вид таблицы. Из представления таблицы у меня есть segue, который подталкивает к первому контроллеру детали. Все работает нормально, segue передает данные в первый контроллер детали, однако я хотел бы снова нажать кнопку на второй контроллер детализации.
Раскладка в раскадровке выглядит следующим образом Image of storyboard
я устанавливаю вверх вторую деталь контроллер и нажат в том, что с помощью кнопки на Первом Detail Controller. Однако я не могу понять, как передать данные, которые у меня есть в массиве, во второй контроллер детализации. Я добавил строку NSLog, чтобы увидеть, что передается вместе, и панель отладки outputing «(нуль)»
Вот мой viewdidload и непосредственно перейти код из .m Первый взгляд контроллер с именем ColorBookViewController:
- (void)viewDidLoad
{
[super viewDidLoad];
Color *color1 = [Color new];
color1.name = @"Red";
color1.hexnumber = @"FF0000";
color1.spanishname [email protected]"Rojo";
Color *color2 = [Color new];
color2.name = @"Green";
color2.hexnumber = @"00FF00";
color2.spanishname [email protected]"Verde";
Color *color3 = [Color new];
color3.name = @"Blue";
color3.hexnumber = @"0000FF";
color3.spanishname = @"Azul";
colors = [NSArray arrayWithObjects: color1,color2,color3, nil];
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"showColorDetail"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
ColorDetailViewController *destViewController = segue.destinationViewController;
destViewController.color = [colors objectAtIndex:indexPath.row];
}
}
Вот вид сделал груз из .m Первого Detail контроллера имени ColorDetailController:
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"This is...%@", color.name);
self.nameLabel.text = color.name;
self.hexnumberLabel.text = color.hexnumber;
}
Мой .h для SecondDetailController:
#import <UIKit/UIKit.h>
#import "Color.h"
@interface SecondDetailViewController : UIViewController
@property (nonatomic,weak) IBOutlet UILabel *spanishnameLabel;
@property (nonatomic, strong) Color *color;
@end
Вот вид сделал груз из .m Второго Detail контроллера имени SecondDetailController:
- (void)viewDidLoad
{
[super viewDidLoad];
self.title = color.name;
NSLog(@"This is...%@", color.spanishname);
self.spanishnameLabel.text = color.spanishname;
}
приложения прекрасно работает в тренажере, но я получаю пустой экран для второго Detail контроллера и я получаю «нулевой» результат из NSLog (@ «Это ...% @», color.spanishname);
Любые предложения относительно того, почему segue проходит и содержит экземпляр для первого подробного просмотра, но не второго подробного представления? Или я пропустил здесь нечто более фундаментальное? Я попытался создать второй SEGUE на Первом Detail Controller и NSLog производит правильный результат (название цвета на испанском языке), но я не знаю, как я бы передать это на вторую Detail контроллера:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"showMoreDetail"]) {
NSLog(@"This is... %@",color.spanishname); //works fine
self.spanishnameLabel.text = color.spanishname; //throws error
}
}
Спасибо за любую помощь или прозрение!
Download the complete project here
Вы передаете объект в массиве цветов для ' Цвет "во втором ВК. Что такое «Цвет»? – CaptJak