2013-03-20 4 views
2

У меня есть небольшая проблема, потому что я не могу передавать данные на другой контроллер представления.Невозможно передать данные другому viewController ios

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

В приведенном выше коде я поставил штрих-код в строке codeString1. Пока не проблема, но когда я отправляю эти данные на другой viewController, barCodeString внезапно становится NULL.

проходит данные ViewController так:

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


    } 

} 

Так как же я могу решить эту проблему?

+1

Попытайтесь понять свой код с помощью отладчика. – dasdom

ответ

0

ли это в viewDidLoad контроллера зрения, то он работает отлично

- (void)viewDidLoad 
{ 

codedeString=[[NSString alloc] init]; 
} 
0

Я предполагаю, что code1 представляет собой текстовое поле, текстовое представление или метку. Если это так, причина в том, что это не работает, то, что выходы для основного еще не установлены во время подготовкиForSegue. Вам нужно создать свойство string в main и установить его значение в code1String в prepareForSegue. Затем в main viewDidLoad или viewDidAppear установите текстовое значение code1 в эту строку.

0

Обратите внимание, что IBOutlets контроллера вида назначения еще не установлены в prepareForSegue. Поэтому, если main.code1 представляет UILabel, он будет равен нулю, потому что представление еще не загружено. Вы должны передать строку напрямую с помощью метода setter: [main setCodeString:codede1String], а затем настроить пользовательский интерфейс в viewDidLoad: self.code1.text = [self codeString].

+0

code1.text - это текстовое поле Я пробовал это [основной наборBarcodeString: codede1String]; и в другом представлении контроллера в viewDidLoad я сделал это self.code1.text = [self barcodeString]; Но проблема в здравом уме – Thymen

0

Попробуйте сделать это, как только помог мне в то же любопытное вопрос (но с xibs)

Добавить еще один линии, непосредственно перед любыми заданиями

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

Надеюсь, это тоже поможет.

Смежные вопросы