在表视图控制器与详细视图控制器之间传递数据时出错

时间:2014-04-07 13:32:16

标签: ios objective-c uitableview

将数据从表视图控制器传递到详细信息视图时出错  控制器。我正在使用导航控制器。

错误消息如下:

  

使用未声明的标识符_wordLabel

这是我在表视图控制器(.m文件)中准备segue的实现。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([[segue identifier] isEqualToString:@"ShowWordDetails"]) {

        //UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
        wordDetailViewController *detailViewController = [segue destinationViewController];
        NSIndexPath *myIndexPath = [self.tableView indexPathForSelectedRow];
        long row = [myIndexPath row];
        detailViewController.wordDetailModel = @[_wordLabel[row], _meaningLabel[row]];
    }
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}

我之前在详细视图控制器中声明了wordLabelmeaningLabel,如下所示:

@property (strong, nonatomic) IBOutlet UILabel *wordLabel;
@property (strong, nonatomic) IBOutlet UILabel *meaningLabel;
@property (strong, nonatomic) NSArray *wordDetailModel;

我还在详细视图控制器的viewDidLoad方法中声明了它如下:

-(void)viewDidLoad {

    [super viewDidLoad];
    _wordLabel.text = _wordDetailModel[0];
    _meaningLabel.text = _wordDetailModel[1];
        // Do any additional setup after loading the view.
}

3 个答案:

答案 0 :(得分:0)

_wordLabel是您的detailViewController的私有成员。您无法像第一次代码报价中那样尝试访问它。您需要拨打detailViewController.wordLabel

答案 1 :(得分:0)

首先,您不能将数组运算符与UILabel

一起使用
_wordLabel[row]

第二,你必须将_wordLabel [row]定义为TVC中的一个数组,它与detailViewController中的标签分开

答案 2 :(得分:0)

我认为您不需要wordDetailModel,因为您可以UILabel访问TableViewController,如下所述

detailViewController.wordLabel.text = @"Word";
detailViewController.meaningLabel.text = @"Meaning";

_wordLabelUILabel,它是DetailViewController中的私有变量,无法直接在TableViewController中使用,您必须使用property来使用它。加上_wordLabel不是@sha和@rockstarr已经回答的数组