0

2 つのビューコントローラー間で文字列を渡したいのですが、常に (null) です

私のコード

GridViewController.h

 #import <UIKit/UIKit.h>

 @interface GridViewController : UIViewController {

 }

 @property (nonatomic, strong)UILabel * labelTitle;

 @end

ViewController.m

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:
    (NSIndexPath *)indexPath{

       NSString *currow =[self.mutableArray objectAtIndex:indexPath.row];
       NSLog(@"the string is %@", currow);
       //the string is Grappe, Brandy and Cognac

       GridViewController * grid = [[GridViewController alloc]initWithNibName:@"GridViewController~iPhone" bundle:nil];

       grid.labelTitle.text = currow;

       NSLog(@"the string is %@", grid.labelTitle.text);
       //the string is (null)

       NSLog(@"the string is  %@", currow);
       //the string is Grappe, Brandy and Cognac

    [self.navigationController pushViewController:grid animated:YES];

 }
4

3 に答える 3

3

テキストを割り当てた時点では、labelTitle のインスタンスは存在しません。Label は xib からインスタンス化され、その場合にのみ値を保持できます。

于 2013-03-13T14:37:36.870 に答える
3

labelTtitleは の GUI 要素ですGridViewController。他のクラスでアクセスしようとすると、値が取得されません。 で を作成し、他のクラスでこの文字列に値を割り当てることをお勧めNSString します。この文字列を次のようにラベルに割り当てますGridViewControllerviewDidLoadGridViewController

-(void)viewDidLoad{

    [super viewDidLoad]; 
    self.labelTitle.text=self.stringYouCreated;

}

このようViewController.mに作成した文字列プロパティに値を割り当てるGridViewcontroller

   grid.stringYouCreated = currow;
于 2013-03-13T14:37:41.200 に答える
1

あなたlabelTitleはゼロのようです。viewDidLoadの方法で作成されているはずです。GridViewController

于 2013-03-13T14:39:31.843 に答える