Раскадровка Модальный ViewController не будет сбрасывать со счетов; перепробовал все - PullRequest
0 голосов
/ 26 февраля 2012

Я (думаю), что я тщательно исследовал эту проблему в документах Apple и онлайн, как здесь, так и в других местах.Однако после нескольких часов поиска неисправностей у меня закончились идеи.Контроллер моего модального представления отказывается отключать себя в соответствующее время.

Я знаю, что модальные контроллеры должны быть отклонены контроллером, который представил модальное представление, и, насколько я могу судить, вот чтоЯ делаю.

Проблема:


Это код, содержащийся в prepareForSegue для представления viewcontroller, полностью:

if ([segue.identifier isEqualToString:@"DISCREPANCYVC"]) {

    DiscrepancyViewController *destController = segue.destinationViewController;
    destController.discrepancyDelegate = self;
}

Модальный контроллер содержит два UIPickerViews, которые ведут себя правильно.Представления выбора используются для создания "lassString ", строки NSString.

У меня есть кнопка" Готово "в модальном представлении, которая при нажатии вызывает этот метод / селектор (согласно определению протокола, которое яустановлено):

[self.DiscrepancyDelegate didFinishWithClassification:classificationString];

Метод didFinishWithClassification выглядит следующим образом:

- (void)didFinishWithClassification:(NSString *)classification {

    [self dismissModalViewControllerAnimated:NO];

Если это имеет значение, протокол определяется как

@protocol DiscrepancyViewControllerDelegate <NSObject>
@required
    - (void)didFinishWithClassification:(NSString *)aClassification;

@end

.Свойство, которое содержит ссылку на представление представления, выглядит следующим образом:

@property (strong, nonatomic) id <DiscrepancyViewControllerDelegate> DiscrepancyDelegate;

Существует четыре дополнительных свойства (сильное, неатомное), которые используются для размещения четырех массивов, которые заполняют UIPickerViews (каждый сборщик имеет два компонента).

Я пробовал увольнять как анимированных, так и не анимированных, без изменений в поведении.

Что может быть причиной этого?Я использую ARC, так что мне не нужно ничего выпускать, прежде чем пытаться сбросить модальный экран, правильно?И из того, что я прочитал, viewDidUnload () не обязательно сработает в этой ситуации (и это не стрельба в моем случае).

Help !!

Thx,

Тед

Ответы [ 2 ]

0 голосов
/ 28 февраля 2012

Я понял это; вроде, как бы, что-то вроде. Должно быть, у меня был неправильно подключен выход или какое-то дублирующее соединение, потому что после уничтожения всех соединений между кнопками и контроллером, сборщиками и контроллером, а затем их сброса, он начал работать. Я не знаю точно, что я сделал (что сейчас сводит меня с ума), но это не было проблемой кодирования.

Слово совета: переберите соединения тонкой зубной расческой. Они могут маскировать проблемы, не представляя себя как ошибки.

Grrrrrrr.

0 голосов
/ 27 февраля 2012

Для работы протокола делегата требуется 9 шагов.Проверьте их все в моем ответе здесь .

Кроме того, утверждение: «Я знаю, что модальные контроллеры должны быть отклонены контроллером, который представил модальное представление», не соответствует действительности.Он предлагается в качестве хорошей формы, но вы можете поместить оператор dismiss в контроллер модального представления, и если у вас нет других причин для получения делегата, я бы сделал это вместо того, чтобы выдерживать сложность настройки протокола делегата.

...