Я начинаю, и у меня есть проект, в котором мне нужно передать данные обратно с контроллера childview. В частности, у меня есть выборщик в моем контейнере, и я хочу иметь возможность использовать его для выбора опции (скажем, чтобы упростить только цвет, выбранный из массива из десяти цветов). Затем я хотел бы иметь доступ к выбранному цвету в контроллере родительского представления и делать с ним что-то. Я исследовал это на пару дней и самый близкий ответ на то, что я ищу, я нашел в связанном вопросе о С.О. Вот он:.Передача данных с контроллера детского представления
«Относительно прохождения значения к контроллеру containerView, вы можете сделать недвижимость в ChildViewController стоимости, которую он будет принят Затем в ParentViewController сделать что-то вроде следующего:
self.ChildViewController.yourProperty = yourValue
противоположное может быть сделано 4 способами:
Вы можете сделать протокол делегата для связи данных между контроллерами
Вы можете опубликовать уведомление в вашем ChildViewController и добавить пар. в качестве наблюдателя.
Вы можете использовать KVO.
И самый простой способ, вы можете сделать свойство в вашем parentviewController и получить доступ к нему, как следующее:»
((YourParentViewControllerClassType *)self.parentViewController).yourParentProperty = TheValueYouWant;
Теперь я хотел бы попробовать четвертый вариант первой, как делегации, КВО и так on - опции, о которых я читал, но не готов к их решению. Последнее, что мне понадобится, - это последний вариант.
Скажем, у меня было свойство в контроллере моего дочернего представления, где храню выбранный цвет. Что-то вроде:
@interface ViewController()
@property NSString *ChosenColorInChildVC;
@end
А потом, позже:
self.ChosenColorInChildVC = [self pickerView:myPickerView titleForRow:[myPickerView selectedRowInComponent:1] forComponent:1]];
как бы я передать это значение, используя предложенную:
((YourParentViewControllerClassType *)self.parentViewController).yourParentProperty = TheValueYouWant;
Может кто-то немой его вниз немного дальше для меня? Спасибо
Привет METRONIC. Спасибо за это, это была огромная помощь. Я сделал все, что вы сказали, и (я думаю) понял логику большей части этого. За исключением последнего бита, который вы написали: «На вашем ParentViewController.m: - (void) passValue: (UIColor *) theValue {// здесь вы получаете цвет, переданный из ChildViewController}« Я понимаю более или менее идею, стоящую за ней, но как это реально работает на практике. Скажем, я выбрал красный цвет в контейнере. как мне получить доступ к нему в моем родителе с помощью этого метода? что-то вроде: UIColor * myReceivedColor = [self passValue: ???]; – Paul
Нет, вы получите данные внутри метода - (void) passValue: (UIColor *) theValue; Поместите контрольную точку в этот метод, чтобы убедиться, что она работает, вы можете получить к ней доступ следующим образом: UIColor * myReceivedColor = theValue; – metronic
OK. Извини за это. Я вообще не знаком с понятием «получение ценностей» внутри метода. Поэтому, чтобы я тебя понял. Нужно ли писать что-либо внутри метода - (void) passValue: (UIColor *) theValue {} в моем родителе? И если я хочу получить доступ к цвету в моем родителе ... Я попытался написать litteraly UIColor * myReceivedColor = theValue; и он возвращается с «использованием необъявленного идентификатора:« theValue ». Я также попытался использовать UIColor * myReceivedValue = [self passValue: theValue]; – Paul