2

別のView Controllerにデータを渡すことができないため、少し問題があります。

-(void)barcodeData:(NSString *)barcode type:(int)type
{
    mainTabBarController.selectedViewController=self;

    [status setString:@""];

    [status appendFormat:@"Type: %d\n",type];
    [status appendFormat:@"Type text: %@\n",[dtdev barcodeType2Text:type]];
    [status appendFormat:@"Barcode: %@",barcode];
    [displayText setText:status];
    codede1String = barcode;
     NSLog(@"%@",codede1String);


    [self updateBattery];
}

上記のコードでは、 String にバーコードを入れていcodeString1ます。これまでのところ問題はありませんが、このデータを他のviewControllerに送信すると、barCodeStringが突然NULLになります。

次のようにviewcontrollerにデータを渡します。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
  if  ([segue.identifier isEqualToString:@"barcode"]) {
        main =[ segue destinationViewController];
      main.code1.text = codede1String;


    }  

}

では、どうすればこの問題を解決できますか?

4

4 に答える 4

0

code1 は、テキスト フィールド、テキスト ビュー、またはラベルであると想定しています。その場合、これが機能しない理由は、prepareForSegue の時点でメインのアウトレットがまだ設定されていないためです。main で文字列プロパティを作成し、その値を prepareForSegue で code1String に設定する必要があります。次に、main の viewDidLoad または viewDidAppear で、code1 のテキスト値をその文字列に設定します。

于 2013-03-20T15:51:11.437 に答える
0

これを試してみてください。同じような問題で一度役に立ちました(ただし、xibsを使用)

割り当ての直前にもう 1 行追加します。

[main.view setAlpha:1.0f];
main.code1.text = codede1String;

これがあなたにも役立つことを願っています。

于 2013-03-23T13:55:50.210 に答える
0

ビューコントローラーのviewDidLoadでこれを行うと、正常に動作します

- (void)viewDidLoad
{

 codedeString=[[NSString alloc] init];
}
于 2013-03-23T13:51:14.730 に答える
0

宛先View ControllerのIBOutletsはまだ設定されていないことに注意してくださいprepareForSegue。したがって、main.code1a を表す場合UILabel、ビューがまだロードされていないため nil になります。setter メソッドを使用して文字列を直接渡し、[main setCodeString:codede1String]次に : でユーザー インターフェイスを構成する必要がありviewDidLoadますself.code1.text = [self codeString]

于 2013-03-20T15:52:41.807 に答える