在stackoverflow上發佈我的第一個問題!希望我的問題很明確,這裏是...將數據從視圖控制器傳遞到第一個詳細控制器,然後傳遞到第二個詳細控制器
我有一個導航控制器嵌入在具有表格視圖的第一個視圖控制器中。從表格視圖中,我有一個推向第一個細節控制器的細節。一切工作正常,segue傳遞數據到第一個細節控制器,但是我想再次從一個按鈕推到第二個細節控制器。
情節板中的佈局看起來像這樣Image of storyboard
我建立的第二細節控制器和從按鈕推到,關於第一個明細控制器。 但是我無法弄清楚如何將數組中的數據傳遞給第二個細節控制器。我添加了一個的NSLog網上看到正在一起傳遞什麼和調試面板outputing「(空)」
這是我的viewDidLoad中,並從.M第一個視圖控制器Segue公司代號爲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];
}
}
這裏是查看從第一個明細控制器命名ColorDetailController的.M做負載:
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"This is...%@", color.name);
self.nameLabel.text = color.name;
self.hexnumberLabel.text = color.hexnumber;
}
我對SecondDetailController .H:
#import <UIKit/UIKit.h>
#import "Color.h"
@interface SecondDetailViewController : UIViewController
@property (nonatomic,weak) IBOutlet UILabel *spanishnameLabel;
@property (nonatomic, strong) Color *color;
@end
下面是這個視圖從命名SecondDetailController第二個細節控制器的.M做負載:
- (void)viewDidLoad
{
[super viewDidLoad];
self.title = color.name;
NSLog(@"This is...%@", color.spanishname);
self.spanishnameLabel.text = color.spanishname;
}
的應用程序運行在模擬器罰款,但我得到了一個空白屏幕爲第二細節控制器我得到NSLog的「null」結果(@「This is ...%@」,color.spanishname);
關於爲什麼segue通過並持有第一個Detail View而不是第二個Detail View的實例的任何建議?或者我在這裏錯過了更重要的東西?我試圖建立的第一細節控制器第二SEGUE和NSLog的產生正確的結果(在西班牙語中的顏色名稱),但我不知道我怎麼會通過這個到第二個細節控制器:
- (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
你在你的顏色數組'傳遞對象顏色「在第二個VC中。什麼是「顏色」? – CaptJak