NSObject modalView и делегирование

#iphone #delegates #modalviewcontroller #nsobject

#iPhone #делегаты #modalviewcontroller #nsobject

Вопрос:

Я изменяю чужой код и пытаюсь использовать ViewController, однако в настоящее время это NSObject. Итак, ниже я добавил newDelegate

 @interface myAppDelegate : NSObject <UITableviewDelegate, newDelegate>
  

в моем коде я пытаюсь вызвать modalview с

 [self presentModalViewController:newModalView animated:YES];
  

Я получаю сообщение об ошибке 'myAppDelegate' may not respond to '-presentModalViewController:animated:' это достаточно справедливо, это NSObject. Может ли кто-нибудь помочь мне с возможным подходом?

Ответ №1:

Если кто-то написал код с NSObject в качестве UIViewController , у вас возникнет много проблем. «Изменение чужого кода» для меня означает «Я новый поставщик после того, как старый парень так сильно облажался, солгав клиенту и сказав, что они могут выполнять работу по разработке iPhone». Может быть, вернуться к клиенту и сказать «нам нужно выполнить повторную разработку с нуля, это мусор»? 🙂

Что касается рассматриваемой проблемы — делегатами приложения являются NSObjects — так что эта часть выглядит правильно. Однако делегатом приложения обычно не должно быть UITableViewDelegate . У вас было бы свойство window и свойство RootViewController в делегате приложения, и заключительный вызов appDidFinishLaunchingWithOptions: создал бы экземпляр контроллера представления и загрузил его в окно. Затем этот контроллер представления будет обрабатывать любые представления (и, вероятно, в данном случае будет UITableViewDelegate).

presentModalViewController: Код встроен в UIViewController, поэтому вы не сможете использовать его для работы непосредственно из делегата приложения.