0

UIcollectionview をビューコントローラーに配置しました (正常に動作しています)。別のビューコントローラーを開き、この VC のラベルを選択したセル テキストで更新したいと考えています。次のコードを使用していますが、機能していません (他の vc のラベルを更新していません):

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
// gorseldetay is another viewcontroller including a label and an image
NSLog(@"Row : %d , Section : %d", indexPath.row, indexPath.section);

[self performSegueWithIdentifier:@"showDetail" sender:self];
gorselDetay *g = [self.storyboard instantiateViewControllerWithIdentifier:@"gorselDetay"];
NSLog(@"%@",g.mylabel2.text); // returns "null"
g.mylabel2.text = @"any text to update";
NSLog(@"%@", g.mylabel2.text); // returns "null"
}

また、 prepareForSegue アクションも追加しました

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSLog(@"%@", segue.identifier); // returns "showDetail", OK

 if ([[segue identifier] isEqualToString:@"showDetail"])
{
    UIImage *imageim2 = [UIImage imageNamed:@"anyimage.png"]; //this file exists

    gorselDetay *r1 = (gorselDetay * )[segue destinationViewController];
    [r1.mylabel2 setText:@"any text to update"];
    r1.gorselim.image = imageim2;
    NSLog(@"2 - %@", r1.mylabel2.text); // returns "null"
}
}

上で述べたように、UICollectionView は正常に読み込まれ、正常に動作していますが、別のビュー コントローラー (gorselDetay という名前) のラベルは更新されていません。しかし、ちなみに gorselDetay vc は正常に開きます。

助けてくれてありがとう。

4

1 に答える 1

2

ビューがまだロードされていない (r1.myLabel2 が null になる) ため、別のコントローラーからこの方法でラベル (または他の UI 要素) を更新することはできません。テキストを r1 の文字列プロパティに渡し、r1 の viewDidLoad でそのプロパティを使用してラベルのテキストを設定する必要があります。

于 2013-07-11T22:52:56.627 に答える