Использование MFMailComposeViewController в раскадровке не работает

В раскадровке я могу настроить переход от кнопки к UIViewController и сделать его модальным. Это прекрасно работает. Однако, когда я меняю класс в раскадровке с UIViewController на MFMailComposeViewController, он вообще не работает. Все, что появляется, — это панель навигации вверху, а остальная часть дисплея заполнена черным цветом. Я использую неправильный подход?


person Alex Bamb    schedule 02.01.2012    source источник


Ответы (2)


У меня была аналогичная проблема с ABPeoplePickerNavigationController, и я тоже не мог понять, в чем проблема. Вы также можете

  1. Вернитесь к IBAction и создайте экземпляр MFMailComposeViewController самостоятельно и отобразите его.

  2. Если вы хотите продолжать использовать раскадровки, что я считаю желательным, вы можете создать класс-оболочку, который внутренне создает экземпляр MFMailComposeViewController, а затем функционирует как прокси-объект и, таким образом, распространяет методы viewDid*** и viewWill*** в обернутый класс, а также возвращает обернутый Представление VC в свойстве view только для чтения... Вы поняли идею.

person Besi    schedule 21.01.2012
comment
Я просто реализовал это в коде в конце. Казалось проще всего. Ваше здоровье - person Alex Bamb; 22.01.2012

В дополнение к ответу Беси:

  1.  
  2.  
  3. Подкласс MFMailComposeViewController и переопределение метода initWithCoder:.

Пример:

-(id)initWithCoder:(NSCoder *)aDecoder
{
    return [super init];
}

Тогда он будет работать с раскадровками, но я думаю, что ваши выходы/теги/другие определения из сцены раскадровки не будут применяться (вам нужно настроить композитор почты внутри вашего метода prepareForSegue:sender:).

person vectoroc    schedule 18.09.2012
comment
Мне очень нравится простота вашего решения. - person David Smith; 20.12.2012