使用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];
}
请帮我解决。
答案 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];
}