0

私は次のような状況にあります。上部に3つのボタンがあるViewController(ContentController)があります。以下に2番目のビュー(contentView)を追加しました。このビューには、これら3つのボタンの背後にあるコンテンツが表示されます。したがって、ボタンを押すたびに、contentViewが変更されます。それで、私がしたことは、3つの追加コントローラーを作成することでした。

FirstController.m、FirstController.h、FirstController.xib

SecondController.m、SecondController.h、SecondController.xib、

ThirdController.m、ThirdController.h、ThirdController.xib、

ContentController.mに、変更を処理する3つのIBActionを追加しました。

@interface ViewController ()

@property (nonatomic,strong) UIViewController *nextController;
@end

@implementation ViewController
@synthesize nextController = _nextController;

-(IBAction)chooseFirstController:(id)sender {
    _nextController = [[FirstController alloc] initWithNibName:@"FirstController" bundle:nil];
    [self.contentView addSubview:_nextController.view];

}
-(IBAction)chooseSecondController:(id)sender{
    _nextController = [[SecondController alloc] initWithNibName:@"SecondController" bundle:nil];
    [self.contentView addSubview:_nextController.view];
}
-(IBAction)chooseThirdController:(id)sender{
    _nextController = [[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil];
    [self.contentView addSubview:_nextController.view];
}

私の最初とThirdControllerは、contentControllerのcontentView内にテーブルビューを表示しています。しかし、secondControllerでは、アイテムを表示するためにgridViewを使用しました。セルを押すと、detailViewControllerに移動するはずです。これにより、そのセルに関する詳細情報が表示されます。だから私のcellForRowAtIndexで私は次のことをしました。

- (void)gridView:(NRGridView *)gridView didSelectCellAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"cell clicked");
    PlayerDetailController *playerController = [[PlayerDetailController alloc]initWithNibName:@"PlayerDetailController" bundle:nil];
    [playerController setLblTest:@"hooray this works"];
    [self.view addSubview:playerController.view];

}

setLblTestを正しく実行し、ContentView内にdetailViewcontrollerも表示します。ただし、ラベルは変更されません。私の@"hooray"にこれは機能します。しかし、私のログでわかるように、それは正しく通過します。

@synthesize testLabel = _testLabel;
@synthesize lblTest = _lblTest;

-(void)setLblTest:(NSString *)lblTest{
    if(![_lblTest isEqual:lblTest]){
        _lblTest = lblTest;
    }
    NSLog(@"log komt %@",lblTest);
    [_testLabel setText:lblTest];
}

ログ

RacingGenk[567:c07] log komt hooray this works

これが私の問題をより明確にすることを願っています

ありがとうございました

4

1 に答える 1

1

ラベルを更新するには、コードを次のように変更する必要があります。

self.testLabel.text = lblTest;

于 2012-10-17T19:40:41.787 に答える