2015-03-02 3 views
-1

У меня есть две раскадровки, каждая из которых содержит один контроллер вида.Xcode передает данные с viewcontroller на другой viewcontroller в другой раскадровки

storyboard1 --------> viewcontrollerA

storyboard2 --------> viewcontrollerB

Как передать строку из viewcontrollerA в viewcontrollerB?

Пример:

[email protected]"The transfer of data worked!"; 

До сих пор, я знаю, как передать взгляды, но я не знаю, как передать данные.

Это мой код для передачи просмотров:

- (IBAction)moveToViewcontrollerB:(id)sender { 

UIStoryboard *storyboard2 = [UIStoryboard storyboardWithName:@"storyboard2" bundle:nil]; 

UIViewController *viewcontrollerB = [storyboard2 instantiateInitialViewController]; 

viewcontrollerB.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 

[self presentViewController:lessonOne_ViewController animated:YES completion:nil]; 

} 

Мой вопрос, если у меня есть строка в viewcontrollerB называется «СравниваемаяСтрока», как я могу обновить эту строку в методе viewcontrollerA IBAction?

Я знаю, как передавать данные с помощью segues, но поскольку этот viewcontroller находится на другом раскадровке, segue - prepareForSegue не будет работать.

Заранее спасибо.

+0

возможно дубликат [Передача данных между контроллерами View] (http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers) –

+0

объявить сильный тип NSString в ViewControllerB. Тогда доступ в ViewControllerA как -> 'viewcontrollerB.testString = @" Hello ViewController B ";' –

+0

Я пробовал все эти решения, но никто из них не работает. В этой ветке используется много обесцененных методов, и ни один из них не может корректно создать контрольный элемент viewcontroller. – hmzfier

ответ

1

Прежде всего, установите Storyboard ID на ваш SecondView Controller, как показано ниже.

enter image description here

Затем добавьте следующие code в вашем button click случае.

- (IBAction)moveToViewcontrollerB:(id)sender { 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard2" 
                 bundle: nil]; 
    SecondStoryboardVC * secondStoryboardVCOBJ_ = [storyboard instantiateViewControllerWithIdentifier:@"SecondClassStoryboardID"]; 
    [secondStoryboardVCOBJ_ setStrValue:@"The transfer of data worked!"]; 
    secondStoryboardVCOBJ_.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
    [self presentViewController:secondStoryboardVCOBJ_ animated:YES completion:nil]; 
} 

Storyboard2 это storyboard имя.

SecondClassStoryboardIDStoryboard ID, который вы указали в storyboard viewController, как показано выше.

SecondStoryboardVC это на secondclass имя, которое вы хотите present

+0

Благодарим за помощь. Xcode дает мне ошибку с этой строкой: SecondStoryboardVC * secondStoryboardVCOBJ_ = [storyboard instantiateViewControllerWithIdentifier: @ "SecondClassStoryboardID"]; -----> Говорят, что «раскадровка» - неизвестный приемник? – hmzfier

+0

'SecondStoryboardVC' - это второе имя класса, которое вы хотите представить. См. Обновленный ответ. В вашем примере его 'viewcontrollerB' –

+0

Это сработало для меня, спасибо Абхишек! – hmzfier

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