Iphone iOS 6将数据从TableView传递到Detail View

Iphone iOS 6将数据从TableView传递到Detail View,iphone,ios,objective-c,uitableview,storyboard,Iphone,Ios,Objective C,Uitableview,Storyboard,我有一个包含一些行的表视图,每行都有详细信息披露按钮。 我希望当用户点击该按钮时,另一个表视图(由脚本定制)出现并显示一些相关数据 从TableViewController.m -(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath { DetailViewController *detailViewController = [

我有一个包含一些行的表视图,每行都有详细信息披露按钮。 我希望当用户点击该按钮时,另一个表视图(由脚本定制)出现并显示一些相关数据

TableViewController.m

-(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {

    DetailViewController *detailViewController = [[detailViewController alloc] init];
    //creating a parse object
    PFObject *checkin = [_dataSourceArray objectAtIndex:indexPath.row];
    //getting data i want
    NSString *trainNumb = [checkin objectForKey:@"trainNumber"];
    //passing the data
    detailViewController.trainNumber = trainNumb;   
}
从DetailTableViewController.m

- (void)viewDidLoad {
    [_trainNumberLabel setText:_trainNumber];
}
问题是在DetailTableView中,
NSString
结果为空


我错过了什么?谢谢大家!

如果此代码实际编译,这可能是您的问题:

DetailViewController *detailViewController = [[detailViewController alloc] init];
应该是:

DetailViewController *detailViewController = [[DetailViewController alloc] init];
但首先,您不应该
alloc/initing
您的视图控制器。当您在Interface Builder中自定义视图控制器时,如果需要这些自定义设置,您必须像下面这样实例化它:

[self.storyboard instantiateViewControllerWithIdentifier:@"MyStoryboardIdentifier"]`
您必须将控制器的脚本ID设置为“MyStoryboardIdentifier”或任何您想要使用的标识符

此外,正如您在评论中指出的,您遇到了一个计时问题:您的详细信息控制器的
viewdiload
在设置车次之前运行。更好的方法是确保它在不考虑顺序的情况下工作:

- (void)updateTrainNumberLabel
{
    self.trainNumberLabel.text = self.trainNumber;
}

- (void)setTrainNumber:(NSString *)trainNumber
{
    _trainNumber = trainNumber;
    [self updateTrainNumberLabel];
}

- (void)viewDidLoad
{
    ...
    [self updateTrainNumberLabel];
}

换句话说,您可以使用单独的方法配置标签,在这种情况下,
updateTrainNumberLabel
,当发生任何可能影响标签的情况时,例如视图加载或更改编号,您可以调用该方法。

添加断点和NSLog来调试您的代码怎么样?您确定在TableViewController.m中不会导致nullyeah在使用NSLog的table view controller中我可以看到正确的值!我已尝试将NSLog放入这两个文件中。我可以看到的是,DetailTableViewController的viewDidLoad中的NSLog在TableViewController的accessoryButtonTappedForRowWithIndexPath中的NSLog之前打印。怎么可能?+1用于捕捉nil上的alloc init。故事板建议是一个很好的建议,但是从nib分配/初始化vc仍然是可以的。如果要使用故事板,还值得一提的是segues。是的。我的意思是如果你想定制故事板,你必须使用
实例化eviewcontrollerwhiteIdentifier
。这是我的打字错误,在我的Xcode中,这是细节!我还将InstanceEviewControllerWithiIdentifier替换为alloc init,但没有更改。没有更改,因为您还有其他问题。但是,在这种情况下,您必须使用
InstanceViewController身份识别器
,否则它将永远无法工作。我根据您的一些评论扩展了我的答案。