我有两个视图,变量是从我的TestViewController加载的,它是一个UITableViewController。下面我有代码的一部分,我相信它会很有用。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *selected = [[_sectionsArray objectAtIndex:indexPath.row] objectForKey:@"Section"];
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.viewController.detailSec = selected;
NSLog(@"%@",selected);
}
在我的ViewController中,以下代码应该将我的UILabel文本更改为我的变量
-(void)setDetailSec:(id)newDetailSec {
if (_detailSec != newDetailSec) {
[_detailSec release];
_detailSec = [newDetailSec retain];
[self configureView];
}
NSLog(@"Step 2 %@",_detailSec);
}
-(void)configureView {
if (self.detailSec) {
self.detailLabelChord.text = [_detailSec description];
NSLog(@"Step 3 %@", _detailSec);
}
正如您所看到的,我添加了NSLog,以便检查是否调用了if函数以及变量是否相应地更改了它!但我的UILabel不会改变!
2012-07-18 22:03:26.077 testapp[17332:11303] Step 3 CHS 21.3x3.2
2012-07-18 22:03:26.078 testapp[17332:11303] Step 2 CHS 21.3x3.2
2012-07-18 22:03:26.079 testapp[17332:11303] Step 1 CHS 21.3x3.2
有任何想法或建议吗?如果您需要更多信息,我不知道是否可以上传我的项目。
提前谢谢
答案 0 :(得分:0)
而不是这样做:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *selected = [[_sectionsArray objectAtIndex:indexPath.row] objectForKey:@"Section"];
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.viewController.detailSec = selected;
NSLog(@"%@",selected);
}
这样做:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *selected = [[_sectionsArray objectAtIndex:indexPath.row] objectForKey:@"Section"];
self.viewController.detailSec = selected;
NSLog(@"%@",selected);
}
每次选择行时都无需从笔尖初始化新的viewController
。您已经拥有viewController
。当你创建一个新的viewController
时,你在这个尚未显示的新控制器上调用setDetailSec
。您没有使用viewController
在UILabel
上看到{{1}}上的号码。