Точка отсчета: Замена контроллера корневого представления / делегата приложения? - PullRequest
1 голос
/ 10 августа 2011

Я новичок в разработке под iOS, очевидно, и у меня возникла небольшая проблема со многими учебниками, которые я нахожу в Интернете.Хотя я понимаю большую часть кода, который входит в эти программы, я не могу понять, как перевести этот факт, который, вероятно, прост.

Многие учебные пособия используют либо шаблон на основе навигации, либо на основе просмотрашаблон, но я хотел бы попробовать создание приложений панели вкладок.В учебных пособиях используется либо делегат приложения, либо rootViewController (являющийся контроллером навигации), но поскольку моя панель вкладок - это мой rootViewController, я всегда сталкиваюсь с проблемой.Я также не могу использовать метод applicationDidFinishLaunching в большей части моего кода, потому что он технически применим только к первой вкладке при запуске.

Это мои вопросы:

  1. Есть ли способ «перевести» эти файлы в новые классы (например, создать экземпляр NSObject для кода делегата приложения для каждой отдельной вкладки или создать экземпляры UINavigationViewController)?

  2. Если я могу создать экземпляр NSObject, как я могу убедиться, что код связывается с объектами, которые я создаю в моем viewController?

  3. Если я могу создать файл, который использует UINavigationControllerКак заставить программу временно разрешить Nav Controller быть rootViewController.

Большое спасибо заранее!

Ответы [ 2 ]

1 голос
/ 10 августа 2011

С самого начала, я могу ответить только за номер 3 для вас, вы можете сделать это одним из двух способов, которые мне известны, и если кто-то увидит, что один из этих способов неправильный или плохой, я надеюсь, что кто-топоправляет меня, так как это то, что я делал.

[appDelegate.window addSubview:appDelegate.newRootViewController.view];
appDelegate.window.rootViewController = appDelegate.newRootViewController; 

или

[self.navigationController pushViewController:appDelegate.newRootViewController animated:YES];

Оба должны выполнить одно и то же, хотя, если вы можете помочь, вторая версия идеальна,Стоит также отметить, что в первом случае нет обмана, вы фактически настраиваете rootViewController вашего приложения на что-то другое.

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

Редактировать: Итак, перечитав и подумав немного об этом, я думаю, что на два других вопроса можно ответить, возможно, уточнив приложение панели вкладок.К сожалению, я довольно новичок в iOS, и у меня не было возможности создать приложение панели вкладок, поэтому я не хочу давать вам неверную информацию.Я бы порекомендовал проверить http://www.techotopia.com/index.php/Creating_an_iOS_4_iPhone_Multiview_Application_using_the_Tab_Bar_%28Xcode_4%29, и, надеюсь, это поможет вам лучше понять, как работают приложения панели вкладок.Я использовал эту электронную книгу вместе с другой с этого сайта в сочетании с учебниками Рэя Вендерлиха, чтобы научить себя.

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

Удачи!

-Каролы

0 голосов
/ 11 августа 2011

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

Это делегат для приложения, а не контроллер.Ваши контроллеры могут быть загружены из xib к моменту вызова applicationDidFinishLaunching, но нет никакой связи между этими двумя событиями.

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

Если вы не создаете экземпляр контроллера панели вкладок в своем основном xib-файле, вы можете создать его здесь, а затем создать экземпляр всех его контроллеров и добавить их в контроллер панели вкладок.Пока вы это делаете, вы можете загружать списки, устанавливать свойства на контроллерах и т. Д.

Если вы создаете экземпляр контроллера панели вкладок в своем основном файле XIB, вы все равно можете получить доступ к его контроллерам здесь.Вы можете редактировать эти контроллеры или выбрасывать их и создавать новые.Вы даже можете выбросить контроллер панели вкладок и переключиться на контроллер навигации.

Я не могу ответить на вопросы 1 и 2, потому что лежащие в их основе предположения неверны.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...