2014-04-10 2 views
0

Я новичок в программировании IOS. Я посылаю целое значение в другой контроллер представления из Segue так:Как передать значение другому контроллеру вида?

SlideShowViewController *destViewController = segue.destinationViewController; 
[destViewController setSelectedButton:tagIndex]; 

Я успешно доступ к этому значению в моем SlideShowViewController.m файл:

@synthesize selectedButton; 

NSLog(@"%i",selectedButton); 

Теперь я хочу, чтобы получить доступ к этому же значению который сохранен в selectedButton в моем другом контроллере View. Так что я сделал это в моем viewDidLoad из AnotherViewController:

SlideShowViewController *button= [[SlideShowViewController alloc] init]; 

NSLog(@"selected button is %i",button.selectedButton); 

Но я не получаю значение здесь.

+0

, пожалуйста, изучите некоторые основные концепции OOPS. –

+2

Вы новичок в программировании на iOS, и вы уже задали вопрос, который ведет запись наиболее часто задаваемого вопроса (+1 миллиард раз). Пожалуйста, используйте функцию поиска;) – CouchDeveloper

+0

При попытке передать значения между 2 VC, которые не подключены (контроллером навигации или контроллером панели вкладок), вы можете использовать делегат. Есть и другие способы. Я бы посмотрел на делегатов и изучил их. – Spectravideo328

ответ

0

В последнем разделе кода вы создаете новый экземпляр SlideShowViewController. Этот экземпляр не будет иметь тех же переменных, что и первый экземпляр. Чтобы получить доступ к полю selectedButton, вам нужно иметь ссылку на свой первый экземпляр SlideShowViewController для доступа к его свойствам.

// Here you create a new instance. You need to hang onto the destViewController 
// pointer if you want to access its selectedButton property later. This means 
// you'll need to use a global variable, or otherwise expose it in some way for 
// future reference. 
SlideShowViewController *destViewController = segue.destinationViewController; 
[destViewController setSelectedButton:tagIndex]; 

Позже, возможно, в другой метод, вы можете сделать что-то вроде:

// Note, we're referring to destViewController using self. I'm assuming you've 
// set up a property on the self object to refer to destViewController outside 
// of the scope of the initial initialization. 
int selectedButtonIndex = self.destViewController.selectedButton; 
+0

можете ли вы написать код или демо-код, чтобы я мог его понять. – mynameisjohn

0

При переходе ко второму контроллеру вид сделать так же, как вы делали для первого

SecondViewController *destViewController2 = segue.destinationViewController; 
[destViewController2 setSelectedButton:tagIndex]; 
+1

Довольно точно вы не можете использовать дефис в имени переменной. – FreeAsInBeer

+0

как пример –

0

в вашем SlideShowViewController.h создает свойство для хранения данных. В вашем SlideShowViewController.m синтезировать свойства и удалить

SlideShowViewController *button= [[SlideShowViewController alloc] init]; 

этой линии от SlideShowViewController.m. В этой строке вы создаете новый экземпляр SlideShowViewController.

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