#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, поэтому вы не сможете использовать его для работы непосредственно из делегата приложения.