将数据从tableView传递到另一个tableView

时间:2014-09-27 15:43:30

标签: ios objective-c

我想将数据从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)

2 个答案:

答案 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委托方法中,您可以将值传递给下一个控制器。

相关问题