detailview控制器值未显示

时间:2013-02-19 14:05:29

标签: iphone uitableview ios6

使用DetailViewController时,值不会从UITabelViewController传递,代码是否有问题?

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

detailedvu *dvController = [[detailedvu alloc] initWithNibName:@"detailedvu" bundle:[NSBundle mainBundle]];
if (0 == indexPath.row)
{
    NSLog(@"0");
    dvController.lb1.text = @"Make";
}
[self.navigationController pushViewController:dvController animated:YES];
}

请帮我解决。

2 个答案:

答案 0 :(得分:2)

dvcontroller被正确实例化。这里的问题是lbl是来自笔尖的标签(我认为)。因此,当推送到viewcontroller时,会创建一个新实例,因此这里的设置没有任何意义。

将其传递到数据持有者(例如NSString)并将标签加载到viewdidLoad

detailedvu

一个建议:请尝试遵循命名约定以提高可读性

快乐编码:)

答案 1 :(得分:2)

你可以用这个来实现这个目标。

在detailedvu.h文件中创建一个字符串变量属性:

@property (strong, nonatomic) NSString * str;

在详细的vu.m文件中添加:

@synthesize str;

- (void)viewDidLoad
{
    [super viewDidLoad];

    if (str.length!=0) {
        NSLog(@"hi%@",str);
        lb1.text=str;
    }
}

在你的表vc .m文件中输入以下代码:

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

detailedvu *dvController = [[detailedvu alloc] initWithNibName:@"detailedvu" bundle:[NSBundle mainBundle]];
if (0 == indexPath.row)
{
    NSLog(@"0");
    dvController.str = @"Make";
}
[self.navigationController pushViewController:dvController animated:YES];
}