0

2つのビューがあり、変数はUITableViewControllerであるTestViewControllerからロードされます。以下に、コードの中で役立つと思う部分があります。

    - (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);
}

ご覧のとおり、if関数が呼び出されているかどうか、およびそれに応じて変数が変更されているかどうかを確認するために、NSLogを追加しました。しかし、私の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

何かアイデアや提案はありますか?さらに情報が必要な場合、プロジェクトをアップロードできるかどうかわかりません。

前もって感謝します

4

1 に答える 1

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

于 2012-07-18T21:44:44.943 に答える