-1

虽然使用的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];
}

请帮我整理一下。

4

2 回答 2

2

您可以使用它来实现这一点。

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

@property (strong, nonatomic) NSString * str;

在 detailvu.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];
}
于 2013-02-19T14:27:16.000 回答
2

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

将它传递给一个数据持有者,如 NSString 并将标签加载viewdidLoaddetailedvu

一个建议:请尝试遵循命名约定以获得更好的可读性

快乐编码:)

于 2013-02-19T14:20:20.827 回答