在视图控制器之间传递数据不起作用

时间:2014-12-09 20:39:55

标签: objective-c iphone sdk

我正在尝试将给定选定单元格的标签传递给其他视图控制器...

ListViewController.m

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

NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow];
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:selectedIndexPath];

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle: nil];
DetailViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"DetailVC"];
viewController.venueName = cell.textLabel;
[self.navigationController pushViewController:viewController animated:YES];

}

这是我的DetailViewController:

·H

@interface DetailViewController : UIViewController {

    IBOutlet UILabel *venueName;
}

@property (nonatomic, strong) IBOutlet UILabel *venueName;

venueName永远不会获取数据。在我的.m中我也合成了场所名称。

3 个答案:

答案 0 :(得分:1)

这是因为您在为其设置字符串时未连接UILabel插座。我建议您创建一个字符串属性来存储该值,并在DetailViewController的viewDidLoad中将字符串设置为venueName。 干杯!!

答案 1 :(得分:1)

您需要像设置和获取文本一样修改以下内容: -

viewController.venueName.text = cell.textLabel.text;

答案 2 :(得分:0)

因此,venueName是指向标签指针,它指向一个表格单元格的现有标签。这显然是错误的 - 您不是要使用表格单元格中的实际标签,而是使用存储在其中的文本。这里的其他答案都是正确的:您肯定是指将一个标签的text属性指定给另一个标签的属性,并且当时尚未创建插座viewController.venueName所连接的标签这段代码执行。

您应该立即修复代码,将有问题的数据(即cell.textLabel.text)分配给目标视图控制器中的字符串属性。让该控制器中的-viewDidLoad-viewWillAppear方法设置text标签的venueLabel属性。在实例化视图层次结构后,将调用这些方法中的任何一个。