2013-03-30 1 views
0

У меня есть tableviewcontroller с именем ReadingMaintView. Каждая строка имеет метку и элемент управления сбора данных, например, «Дата чтения» имеет текстовое поле. Чтобы позволить пользователю использовать свой большой палец для прокрутки, несмотря на дату, чтобы выбрать дату, которую они хотят поместить в текстовое поле для чтения даты, у меня есть еще один ViewController, называемый AccessoryViewController. Все, что есть на этой точке зрения, - это датпикер. Когда пользователь прикасается к кнопке аксессуаров, у меня есть segue для запуска AccessoryViewController. Это значит, что пользователь может выбрать желаемую дату.Как диспетчер просмотра может определить, как его называл viewcontroller?

Теперь я хотел бы, чтобы любой Viewcontroller смог вызвать AccessoryViewController на нужную ему дату. Это означает, что AccessoryViewController должен знать имя вызывающего ViewController, чтобы он мог отступить. Как я могу это сделать ? Я подготовил для segue в ReadMaintView, и он срабатывает, когда я касаюсь кнопки аксессуаров. Но что мне нужно сделать в AccessoryViewController для получения имени вызываемого (в данном случае ReadingMaintView) для выполнения обратного вызова?

ответ

0

Если я понимаю ваш вопрос, вот несколько предложений. Либо передать ReadingMainView в качестве параметра конструктору для вашего AccessoryViewController

public class AccessoryViewController : UIViewController { 
    public AccessoryViewController(UIViewController parent) {} 
} 

(Edit:. @LarryOBrian, конечно, правильно это уже обрабатывается ParenViewController собственности, так что это не очень хорошее предложение ...)

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

// Somewhere in ReadingMaintView 
var accessoryViewController = new AccessoryViewController(); 
accessoryViewController.ActionCompleted += (eventArgs) => {} 
+0

Хм ... Я понимаю, что вы имеете в виду. Я дам ему попробовать. – mrMagik3805

+0

На самом деле мне очень нравится идея испускать событие, на которое можно реагировать: в общем, излучение события и реагирование на вещи более надежны, чем попытка «нажать» состояние. –

0

Каждый UIViewController имеет ParentViewController property type UIViewController. Или вы можете захватить UIWindowRootViewController и проделать свой путь с помощью ChildViewControllers, если вы находитесь в иерархии.

Кроме того, я могу не понимать ваш случай использования, но кажется, что вы можете просто позвонить UIViewController.PerformSegue(String identifier).

+0

Спасибо Ларри. Я попробую вашу идею PerformSegue. – mrMagik3805

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