2015-08-06 4 views
1

Я пытаюсь показать MFMessageComposeViewController из пользовательского класса TableViewCell, но получаю сообщение об ошибке «Множественное наследование от классов UITableViewCell и UIViewController». Я знаю, что UIViewController требуется для MFMessageComposeViewController, так как я могу это исправить?MFMessageComposeViewController в UITableView (Swift)

Мой код:

class TableViewCell: UITableViewCell, MFMessageComposeViewControllerDelegate { 

    var userNumber: String! 

@IBAction func callButton(sender: AnyObject) { 

    UIApplication.sharedApplication().openURL(NSURL(string: "telprompt://\(userNumber)")!) 

} 

@IBAction func textButton(sender: AnyObject) { 

    let message = MFMessageComposeViewController() 
    message.body = "" 
    message.recipients = ["\(userNumber)"] 
    message.messageComposeDelegate = self 


} 

func messageComposeViewController(controller: MFMessageComposeViewController!, didFinishWithResult result: MessageComposeResult) { 


} 
+0

Вы можете разместить свой код? Вы должны иметь возможность вызвать MFMessageComposeViewController из (например) didSelectRowAtIndexPath: в UIViewController - вам не нужно делать это в своем (пользовательском) UITableViewCell. – Glorfindel

+0

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

ответ

0

Вы действительно нуждаетесь в UIViewController представить MFMessageComposeViewController. Для того, чтобы решить вашу проблему, вы можете добавить свойство к вашему TableViewCell:

var viewController: UIViewController? 

Вам необходимо назначить текущий контроллер представления в функции cellForRowAtIndexPath - если контроллер представления является источником данных в виде таблицы, это было бы только cell.viewController = self.

Затем в функции textButton, вы можете представить сообщение композитора:

self.viewController.presentViewController(message, true, nil) 

Для увольнения в didFinishWithResult, просто позвоните

self.viewController.dismissViewController(true, nil) 
+0

Спасибо! Тем не менее, я не могу уволить композитора сообщений с помощью didFinishWithResult, поскольку я не могу использовать rejectViewController. Как я могу это исправить? –

+0

Также с 'self.viewController' - см. Мой обновленный ответ. – Glorfindel

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