无法更改UILabel的文本

时间:2012-07-18 21:08:07

标签: ios xcode ipad uilabel uitableview

我有两个视图,变量是从我的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

有任何想法或建议吗?如果您需要更多信息,我不知道是否可以上传我的项目。

提前谢谢

1 个答案:

答案 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。您没有使用viewControllerUILabel上看到{{1}}上的号码。