2015-09-22 3 views
0

Я хочу передать данные из метки (результат вычисления) в VC1 на другую метку в VC2. я получил сообщение об ошибке "Несовместимые типы пуант относящий NSString _Nullable из UILabel" В ViewController2.m <Передача данных между VC

ViewController.h:

@property (strong, nonatomic) IBOutlet UILabel *ResultVC1; 

Посмотреть Controller.m:

- (IBAction)GoToVc2Button:(id)sender { 
[self performSegueWithIdentifier:@"SegueToVc2" sender:self]; 
} 
#pragma mark - Data Sending 
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
if ([segue.identifier isEqualToString:@"SegueToVC2"]) { 
    ViewController2 *secondVC=(ViewController2 *)segue.destinationViewController; 
secondVC.ResultFromVc1=self.lab; 
} 
} 

ViewController2.h:

@property (strong, nonatomic) UILabel *labelVC2; 
@property (strong, nonatomic) IBOutlet UILabel *ResultFromVc1; 

ViewController2.m:

NSLog(@"Result From Vc1 is%@",self.ResultFromVc1); 
_labelVC2.text=self.ResultFromVc1; 
+1

почему вы назначаете ярлык ???? label.text возвращает String –

ответ

1

Посмотрите на свой код для линии, вызвавшей ошибку. Прочтите ошибку. Понятно, в чем проблема. Вы назначаете UILabel собственности NSString.

_labelVC2.text=self.ResultFromVc1; 

должно быть:

_labelVC2.text=self.ResultFromVc1.text; 

Но почему вы передаете UILabel к UILabel? Вы должны пройти NSString до NSString. Затем используйте строку, чтобы установить текст метки.

+0

Спасибо rmaddy, он решает мою проблему. – Manolo

1

Вы пытаетесь установить компонент вида (lab in viewController1) одного VC на компонент вида другого VC (labelVC2 VC2). Это неправильный способ сделать. Если вы просто хотите, чтобы скопировать результат вы можете просто передать строки результата как:

if ([segue.identifier isEqualToString:@"SegueToVC2"]) { 
    ViewController2 *secondVC=(ViewController2 *)segue.destinationViewController; 
secondVC.labelVC2.text =self.ResultVC1.text; 
} 
+0

Это не сработает. 'secondVC.labelVC2' является' UILabel'. Вы не можете назначить ему «NSString». – rmaddy

+0

Сделали редактирование. Спасибо – iamyogish

+0

На этом этапе, как упоминалось в моем ответе, нет причин, по которым 'labelVC2' является' UILabel'. Это должно быть просто 'NSString'. – rmaddy

1
In VC2 
@property (strong,nonatomic) NSString *strVal; 

-(void) ViewDidLoad 
{ 
labelVC2.text=strVal; 
} 
In VC1 

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
if ([segue.identifier isEqualToString:@"SegueToVC2"]) { 
    ViewController2 *secondVC=(ViewController2 *)segue.destinationViewController; 
[email protected]"Hello"; 
} 
} 
Смежные вопросы