【发布时间】:2010-04-27 11:20:41
【问题描述】:
对不起,这个基本问题,但这让我困扰了一段时间。
我从 UITable 创建了一个详细信息视图并尝试动态设置其标签,但它们没有更新:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
myObject *tmpObj = [[myObject objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
myViewController *tmpVC = [[myViewController alloc] initWithNibName:@"NIBfile" bundle:nil];
[tmpVC.myLabel setText:tmpObj.myTitle]; // The debugger shows the text: myTitle = "myText"
NSLog(@"%@", tmpVC.myLabel); // NSLog SHOWS NULL
[self.navigationController pushViewController:tmpVC animated:YES];
[tmpObj release];
}
Interface Builder 中的连接已设置。文件所有者的连接选项卡显示
'myLabel' - 'Label (myLabel)'
任何想法为什么价值没有通过?
还有一些观察:
- 我还连接了一个 IBAction。 当我正确调用此方法时 点击已连接的按钮。
- 我得到了一些指向我的 NSLog-statement,是否应该 最好不要使用 tmpVC.myLabel.text, 但尝试也会返回 NULL。
- myLabel 被声明为 IBOutlet 界面中的 UILabel *myLabel。 该属性被定义为非原子的, 保留。
那里有光:
在玩了一会儿之后,我将 pushViewController 语句移到标签更新上方。这解决了标签更新问题。
工作代码如下所示:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
myObject *tmpObj = [[myObject objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
myViewController *tmpVC = [[myViewController alloc] initWithNibName:@"NIBfile" bundle:nil];
[self.navigationController pushViewController:tmpVC animated:YES];
[tmpVC.myLabel setText:tmpObj.myTitle]; // The debugger shows the text: myTitle = "myText"
NSLog(@"%@", tmpVC.myLabel); // NSLog SHOWS NULL
[tmpObj release];
}
但我不明白为什么我需要先推送我的 viewController ???
【问题讨论】:
-
除了dealloc之外,你会在代码中的任何地方发布它吗?
标签: iphone objective-c