プッシュされたセルから別のビューに移動するためにdidSelectRowAtIndexPathを使用するテーブル コントローラーがあります。その中で、新しいView Controllerを初期化し、それにいくつかのデータをプッシュします。その後、pushViewControllerを実行します。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Navigation logic may go here. Create and push another view controller.
ServicesModel *service = [services objectAtIndex:indexPath.row];
ServiceViewController *serviceViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"ServiceView"];
serviceViewController.serviceModel = service;
NSLog(@"Set model %@", service.title);
// Pass the selected object to the new view controller.
[self.serviceController pushViewController:serviceViewController animated:YES];
}
私のServiceViewControllerには、選択したサービスのラベルserviceTitleとServiceModelプロパティがあります
@property (weak, nonatomic) IBOutlet UILabel *serviceTitle;
@property (strong, nonatomic) ServiceModel *serviceModel;
viewDidLoadを使用して、ラベルのテキストを変更しようとしています
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
NSLog(@"viewDidLoad %@", self.serviceModel.title);
self.serviceTitle.text = self.serviceModel.title;
}
また、 viewDidAppearでモデルにアクセスしようとしています
- (void) viewDidAppear:(BOOL)animated
{
NSLog(@"viewDidAppear %@", self.serviceModel.title);
}
ビューが開くと、ラベルは空です。なんで?私は何を間違っていますか?最も奇妙なのはログです:
(-[ServiceViewController viewDidLoad]) (ServiceViewController.m:43) viewDidLoad (null)
(-[ServicesTableViewController tableView:didSelectRowAtIndexPath:]) (ServicesTableViewController.m:127) Set model Google.com
(-[ServiceViewController viewDidAppear:]) (ServiceViewController.m:36) viewDidAppear (null)
モデル プロパティを割り当てる前に、 viewDidLoadが起動することがわかります。そしてviewDidAppearモデルのプロパティはまだnullです。それはどのようにできますか?