将数据传递给子视图

时间:2013-05-14 17:52:01

标签: iphone ios objective-c ios5 ios6

如何将数据传递给子视图?


SubviewViewController.h:

@property (weak, nonatomic) IBOutlet UILabel *lblName;

TableViewController.m:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Load SubView    
    SubviewViewController *SVC = [self.storyboard instantiateViewControllerWithIdentifier:@"SubviewViewController"];

    SVC.lblName.text = @"TEST"; // It's not working properly.

    SVC.view.frame = CGRectMake(20, 60, SVC.view.frame.size.width, SVC.view.frame.size.height);
    [self addChildViewController: SVC];
    [SVC didMoveToParentViewController:self];
    [self.view addSubview:SVC.view];
}

1 个答案:

答案 0 :(得分:1)

SVC.lblName.text = @"TEST";无法正常工作,因为标签尚未初始化。原因是具有标签的视图在[self.view addSubview:SVC.view];之前没有加载到内存中,因此lblName将是nil ...所以如何解决这个问题?

将此行SVC.lblName.text = @"TEST";移到[self.view addSubview:SVC.view];下方将解决属性初始化问题,因为当SCV.view作为子视图添加时,lblName将被分配属性/出口。

希望如果其他所有内容都在您的代码中正确配对,这将对您有用。