MVC, Controller-ы и мозг после Delphi/.nethttp://pyobjc.ru/forum/iphone-objc/42/2008-10-18T17:51:11ZMVC, Controller-ы и мозг после Delphi/.net2008-10-18T17:51:11ZiBeginnerhttp://pyobjc.ru/forum/iphone-objc/42/<div>Нашёл туториал - который показывает как руками собрать TabBarController - <a href="http://miketeo.net/wp/index.php/2008/08/31/simple-iphone-tutorial-part-1.html" rel="nofollow">http://miketeo.net/wp/index.php/2008/08/31/simple-iphone-tutorial-part-1.html</a><br /><br /><br />Но вот руками собрать в дочернем НИБ-е NavigatorController не получается.<br />Видимо придётся тип UIView TabItem указывать явно</div>MVC, Controller-ы и мозг после Delphi/.net2008-10-18T17:51:00ZiBeginnerhttp://pyobjc.ru/forum/iphone-objc/42/<div>Нашёл туториал - который показывает как руками собрать TabBarController - <a href="http://miketeo.net/wp/index.php/2008/08/31/simple-iphone-tutorial-part-1.html" rel="nofollow">http://miketeo.net/wp/index.php/2008/08/31/simple-iphone-tutorial-part-1.html</a><br /><br /><br />Но вот руками собрать в дочернем НИБ-е NavigatorController не получается.<br />Видимо придётся тип UIView TabItem указывать явно</div>MVC, Controller-ы и мозг после Delphi/.net2008-10-18T00:39:50ZiBeginnerhttp://pyobjc.ru/forum/iphone-objc/42/<div>В проекте я всего лишь в MainView я сказал, чтобы грузились соответствующие NIB-ы :-)<br />а в этих самых нибах я добавил Navigation controller-ы, и их NavigationBar я &quot;пределал&quot; к File's owner - ам</div>MVC, Controller-ы и мозг после Delphi/.net2008-10-17T15:48:08ZАлексей Блиновhttp://pyobjc.ru/forum/iphone-objc/42/<div>Потому что ты такого там нагородил, что я разобраться что к чему и зачем не могу :) Я конечно мог бы попытаться, но времени не хватает на все. Поэтому позволь подсказать тебе, как я бы поступил в твоей ситуации.<br /><br />1) Категоризируй каждый свой экран (к примеру №1.1 и №2.1 — одно и то же, только заголовки разные)<br />2) Для каждой категории создай свой View (к примеру №1.1 и №2.1 ты правильно назвал CatalogView.nib)<br />3) Соответственно для каждого view напиши свой котроллер, который инициализируется с параметрами, уникальными для этого view (data source таблицы, заголовок и пр.)<br />4) Также в инициализации контроллеров создавай навигационные кнопки примерно таким путем:<br /><br />self.navigationItem.leftBarButtonItem = <br /> [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel<br /> target:self <br /> action:@selector(goBack:)] autorelease];<br />self.navigationItem.rightBarButtonItem = <br /> [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave<br /> target:self <br /> action:@selector(blahblah:)] autorelease];<br /><br />Если не укажешь leftBarButtonItem, то по умолчанию она будет кнопкой &quot;Назад&quot; с заголовком предыдущего view.<br /><br />5) Когда нужно (в твоем случае при нажатии на ячейку таблицы) создавай соответствующий контроллер и вызывай<br /><br />[self.navigationController pushViewController:controller animated:YES];<br /><br /><br /><br />Дай знать, если все заработает (если не заработает, тоже дай знать).</div>MVC, Controller-ы и мозг после Delphi/.net2008-10-17T11:21:32ZiBeginnerhttp://pyobjc.ru/forum/iphone-objc/42/<div><a href="http://ifolder.ru/8608903" rel="nofollow">http://ifolder.ru/8608903</a><br /><br />тут проект.<br />почему-то не загружаются nib ы который я прописал в tabBar-e</div>MVC, Controller-ы и мозг после Delphi/.net2008-10-17T00:57:56ZАлексей Блиновhttp://pyobjc.ru/forum/iphone-objc/42/<div><i>В него я добавляю NavigationController, но его view не могу свзяать с Files Owner, а только с view который уже в нём сидит.</i><br /><br />Ну так так и должно быть. <br /><br /><i>Как мне заставить на экране появлятся на экране NavigatorController который лежит в стороннем nib-e?</i><br /><br />NavigatorController не может появиться на экране — он контроллер. А вот его view может. Чего-то я твою проблему перестал видеть. Зазипуй свой проект, выложи где нибудь и скажи, что ты хочешь, чтобы появлялось и где.</div>MVC, Controller-ы и мозг после Delphi/.net2008-10-16T21:26:54ZiBeginnerhttp://pyobjc.ru/forum/iphone-objc/42/<div>Окей :-)<br />Создаю новый проект TabBar application based. Добавлюя новый TabBarItem для которого говорю, чтобы грузился ThirdView.xib. Этот самый ThirdView.nib делаю из view based file. <br />В него я добавляю NavigationController, но его view не могу свзяать с Files Owner, а только с view который уже в нём сидит.<br />И соответстсвенно при загрузке этого nib-a я на экране вижу view который я могу связать с Files Owner, а не UINavigatorController.<br /><br />Как мне заставить на экране появлятся на экране NavigatorController который лежит в стороннем nib-e?<br /><br /><i>на всякий случай, кода я никогого не писал :-)</i></div>MVC, Controller-ы и мозг после Delphi/.net2008-10-16T15:29:55ZАлексей Блиновhttp://pyobjc.ru/forum/iphone-objc/42/<div><i>если так, то что должно быть в загружаемом nib-e? непосредственно контент того, что будет отображаться через navagationBar?</i><br />И все-таки давай определимся с понятиями :)  Navigation Bar — та штука сверху, у которой есть левая и правая кнопки и заглавие. Она работает вкупе с NavigationController'ом и ей совершенно пофигу, что ты засунешь во view, в котором она сидит. То, что снизу — это Tab Bar. В него авторы встроили возможность указывать тип содержимого каждой страницы: всего лишь для удобства и простоты решения частой проблемы. Это совершенно не значит, что содержимое страницы должно что-то делать или чему-то соответствовать. Абстракция никуда не исчезает. Если сомневаешься, просто оставь значение по умолчанию (View Controller).<br /><br />А в загружаемом nib'е должен быть интерфейс, который ты хочешь отобразить при переходе на соответствующую страницу.</div>MVC, Controller-ы и мозг после Delphi/.net2008-10-16T11:45:59ZiBeginnerhttp://pyobjc.ru/forum/iphone-objc/42/<div>Т.е. то что нарисованно на &quot;a.2&quot; - это всё же своего рода типы &quot;коннекторов&quot; которые говорят - на первой закладке у нас будет просто View, на второй - navigation bar, а на третей - тоже просто view. т.е. полной абстракции tabBar-a от контента не получится?<br /><br />если так, то что должно быть в загружаемом nib-e? непосредственно контент того, что будет отображаться через navagationBar?<br /><br /></div>MVC, Controller-ы и мозг после Delphi/.net2008-10-16T07:30:01ZАлексей Блиновhttp://pyobjc.ru/forum/iphone-objc/42/<div><i>дык push-ить и pop-ить придётся в контроллере который обслуживает MainView.nib, а не тот .nib в котором логически должен быть прописан</i><br /><br />Пушить и попить можно где угодно. В любом view controller'e то есть. Создал нужный view controller и вызвал [self.navigationController pushViewController:animated] (кажется так, я сейчас на работе — не могу проверить).<br /><br /><i>а зачем ей знать? пускай грузит nib и не волнуется за то, что будет проиходить в дочернем sub-view<br />видишь, если поставить в MainView.nib сразу UINavigationController, то сразу же будет рисоваться вверху табБар. А мне хочется, что бы он рисовался после(благодаря тому) что я загружу nib в котором он будет и в котором будет реализована его логика</i><i><br /><br />То есть тебе нужно в TabBarController'e ставить тип UIViewController и не париться. Просто эппл предусмотрительно ввел несколько других опций, чтобы было немного проще. (И да, то, что сверху — это navigation bar. Tab bar — он снизу.)</i></div>MVC, Controller-ы и мозг после Delphi/.net2008-10-16T02:34:58ZiBeginnerhttp://pyobjc.ru/forum/iphone-objc/42/<div><i>2) для чего надо настраивать тип класса для каждого &quot;UITabBaritem&quot;? см картинку &quot;a.2&quot;?<br />Ну, чтобы система знала, что делать. Поставишь Navigation Controller — будет тебе Navigation Bar сверху автоматически. Хочешь сам Navigation Bar рисовать — ставь тип View Controller и добавляй в свой View навигацию сам. Не уверен, что будет происходить в случае последних двух опций.</i><br /><br />а зачем ей знать? пускай грузит nib и не волнуется за то, что будет проиходить в дочернем sub-view<br />видишь, если поставить в MainView.nib сразу UINavigationController, то сразу же будет рисоваться вверху табБар. А мне хочется, что бы он рисовался после(благодаря тому) что я загружу nib в котором он будет и в котором будет реализована его логика<br /><br /><i>Немного не понял вопроса. Бери и выноси, что мешает-то? :) Вообще в твоем случае можно обойтись без отдельного UINavigationController'a — для каждого View создавай ViewController, в котором сам настраивай кнопки на Navigation Bar, которые при нажатии будут делать либо push: либо pop: на местном NavigationController'e.</i><br /><br />дык push-ить и pop-ить придётся в контроллере который обслуживает MainView.nib, а не тот .nib в котором логически должен быть прописан<br /><br /></div>MVC, Controller-ы и мозг после Delphi/.net2008-10-16T02:21:42ZiBeginnerhttp://pyobjc.ru/forum/iphone-objc/42/<div>Я вот что хотел сказать своими постами:<br /><br />у меня было(есть) желание, чтобы файл MainView.nib управлял (читай показывал) через UITabBarController другие 3 nib файла (CatalogView, FavView, InfoView). И при этом чтобы MainView.nib не волновало, что внутри них ( UIViewController, UITableViewControoler, а может в нибе ещ] один UITabBarController )<br /><br />Т.е. когда увидел надпись: Loaded From SecondView.nib мне отчего-то подумалось, что при таком раскладе UITabBarController-y( который снизу :-) ) будет пофигу что будет в загружаемых ниб-ах<br /><br />а оказывается нет?<br /><br /></div>MVC, Controller-ы и мозг после Delphi/.net2008-10-16T01:03:04ZАлексей Блиновhttp://pyobjc.ru/forum/iphone-objc/42/<div><i>1) насколько верно выносить GUI(UIView,UINavigationController) в отдельные файлы? Даже FirstView in uitabbar?</i><br /><br />Вернее некуда. Модуляризация, даже если и кажется ненужной сейчас, спасет тебя в будущем. Эппл &quot;хочет&quot;, чтобы ты сделал так; поверь, так и надо.<br /><br /><i>2) для чего надо настраивать тип класса для каждого &quot;UITabBaritem&quot;? см картинку &quot;a.2&quot;?</i><br /><br />Ну, чтобы система знала, что делать. Поставишь Navigation Controller — будет тебе Navigation Bar сверху автоматически. Хочешь сам Navigation Bar рисовать — ставь тип View Controller и добавляй в свой View навигацию сам. Не уверен, что будет происходить в случае последних двух опций.<br /><br /><i>3) Как вынести UINavigationController и сопутствующее (т.е. сделать листалки с таблицами)в отдельный nib файл, но чтобы его можно было бы задействовать в UITabBarViewController-e?</i><br /><br />Немного не понял вопроса. Бери и выноси, что мешает-то? :) Вообще в твоем случае можно обойтись без отдельного UINavigationController'a — для каждого View создавай ViewController, в котором сам настраивай кнопки на Navigation Bar, которые при нажатии будут делать либо push: либо pop: на местном NavigationController'e.<br /><br /><i>Тут загвоздка в том, чтобы сверху спрятать верхний UITabBar.</i><br /><br />TabBar вроде снизу. Или я что-то не понимаю?<br /><br />З.Ы. Привет свитчеру с C# от свитчера с C#! :)</div>MVC, Controller-ы и мозг после Delphi/.net2008-10-15T17:53:45ZiBeginnerhttp://pyobjc.ru/forum/iphone-objc/42/<div>Сейчас опишу логику программы:<br /><br />№0 - это стартовый экран программы. <br />MainView.nib загружает UITabBArController, который грузит для первого selected item-а CatalogView.nib который содержит следущее:<br /><br />4 картинки в центре - это кнопки, типа категории. тап-ая их мы в вавливаемся в иерархический каталог(1.1,1.2), у которого могут быть несколько вложений (1.2-&gt;1.2-&gt;1.2) и заканчивается дело тем, что показывает картинку.<br /><br />Тут загвоздка в том, чтобы сверху спрятать верхний UITabBar. я ему пытался прописать в IB hiden =true, но что-то не работает. Прятать его хочу, чтобы весь nib был основан на UINavigationController, а не частично на UIViewCotroller+UINavigationController.<br /><br />Вобщем это первый tabBarItem, и он вроде самый сложный.<br /><br />tabBarItem = 2 (картинки 2.1, 2.2) - там просто избранное, и кликая на нём мы сразу же видим картинку<br /><br />tabBarItem = 3 (картинка 3.1) - просто UIView c информацией о версии программы и т.п.</div>MVC, Controller-ы и мозг после Delphi/.net2008-10-15T17:41:53ZiBeginnerhttp://pyobjc.ru/forum/iphone-objc/42/<div>Привет! <br />Наткнулся на сайт благодаря Хабре и айФону. по статьям и форумам понял, что тут собираются люди которые не первую неделю кодят для Кокоа. Поэтому кое как расчитываю на вашу помощь программисту, которому тяжело перестроится после Delphi и C# :-). А вообще, у меня ситуация такая: год назад купил айФон, поставил тулЧеин и писал небольшие программки в свою пользую. ну и заодно хвастался начальству, что мол какой я сотрудник, умею позновать новое и т.п. И недавно начальство меня попросило написать для внутренних нужд агенства программу, по выбору клипарта. И если для тулЧейна вроде идеология понятна, то с приходом SDK и MVC - стало тяжко.<br />Уже три недели гуглю, читаю доки, форумы и т.п. смотрю туториалы, но всегда спотыкаюсь на то, что в них рассказывается<br />как кодить примитив не усложняя задачу, ну или не то, чтобы усложняя, а скажем так зайти с другого хода.<br /><br />Вот вобщем архитектурный вид моего App<br /><img src="http://pic.ipicture.ru/uploads/081015/gjIcUGi5E2.jpg" /><br /><br />Т.е. если в общем и целом, то хочу написать программу, в основе которой лежит <br />UITabView(Controller) и в каждой UITabBaritem свой UIView с UINavagationContoller<br />Как я поянл - это самая часто встречаемая проблема <br /><br />UITabBarController + UINavigationController<br /><br /><br />Если посмотрите на картинку и там на суб-кортинку &quot;а.1&quot;, то увидите, что<br />по default-у IB предлагает нам подгружать &quot;под-GUI&quot; ниб файлов(Loaded From SecondView.nib).<br /><br />Так вот в настоящий момент меня интересует:<br />1) насколько верно выносить GUI(UIView,UINavigationController) в отдельные файлы? Даже FirstView in uitabbar?<br />2) для чего надо настраивать тип класса для каждого &quot;UITabBaritem&quot;? см картинку &quot;a.2&quot;?<br />Я думал, что это как-бы тип &quot;коннектора&quot; к которому должен кконектиться в nib файле UITabBAr при выборе соответствующего item-а. Но как я понял, это заблуждение. отсюда третий вопрос:<br />3) Как вынести UINavigationController и сопутствующее (т.е. сделать листалки с таблицами)в отдельный nib файл, но чтобы его можно было бы задействовать в UITabBarViewController-e?<br /><br />Как мне думается, идеалогия MVC строится на том, что &quot;мухи отдельно, котлеты отдельно&quot;.<br />Поэтому в MainView.nib я хочу настраивать только uitabbarview(ну и чтобы он отвечал только за то, чтобы переключать view)<br />, а в других nib-ах, другие логические части программы.<br /><br />Пробывал тупо указывать имя nib-а, а в дочернем нибе приделывать UINavigationController - не работает.<br />А вот если UINavigationController реализовывать в MainView.nib, т.е. там же где и UITabBarController,<br />то всё хорошо.<br /><br />В общем это первая порция вопросов :-)<br /><br />Предлагаю активно учавствовать в дискуссии, я потом выложу исходники проекта.<br /><br />С уважением, iBeginner</div>