我想将数据从SportVC发送到CCMatchForSportTableViewController
是的我已经在SportVC.h的头文件中导入了目标类
#import "CCMatchForSportTableViewController.h"
这是将数据发送到第二个视图控制器的方法
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
CCMatchForSportTableViewController *matchForSport = [[CCMatchForSportTableViewController alloc] init];
matchForSport.sportSelected = [self.sport objectAtIndex:indexPath.row];
[self performSegueWithIdentifier:@"SportToMatchSegue" sender:self];
}
这是CCMatchForSportTableViewController.h中头文件中的属性
@interface CCMatchForSportTableViewController : UITableViewController
@property (strong,nonatomic) NSString *sportSelected;
@end
但是当我在CCMatchForSportTableViewController.h中的viewDidLoad方法和单元格标题(当然是另一种方法)中执行此操作时:
NSLog(@"kontolasd %@", self.sportSelected);
它说
kontolasd (null)
答案 0 :(得分:0)
当你致电performSegueWithIdentifier
时,它会从你的故事板加载你的视图控制器。您创建并用于matchForSport.sportSelected
的那个将在方法结束时释放。您需要使用目标控制器实现prepareForSegue
方法并在那里进行分配。
答案 1 :(得分:0)
当视图加载当然没有选择任何行时,你需要在didselect中移动该行:
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath*)indexPath{
CCMatchForSportTableViewController *matchForSport =
[[CCMatchForSportTableViewController alloc] init];
matchForSport.sportSelected = [self.sport objectAtIndex:indexPath.row];
self.sportSelected = matchForSport.sportSelected;
NSLog(@"kontolasd %@", self.sportSelected);
[self performSegueWithIdentifier:@"SportToMatchSegue" sender:self];
}
这将显示您选择的值,然后在performSegue
委托方法中,您可以将值传递给下一个控制器。