Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Аналог Navigation-based Application в xcode 4 
:(
    Опции темы
fris
Дата 15.2.2012, 01:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 15.2.2012

Репутация: нет
Всего: нет



Приветствую. 

Возникла необходимость попробовать написать прожку для iphone. Уровень знаний в данной области нулевой. 

Mac mini, xcode 4.2.1.

Нужно для начала на эмуляторе сварганить rss читалку.
В инете в примерах по подобной задаче написано что нужно создать проект Navigation-based Application. Но почему то при выборе шаблонов Navigation-based Application нету.
Вопрос : какой другой взять шаблон наиболее приближенный к указаному? Или же где можно настроить эти шаблоны, чтоб появился нужный?

Заранее спасибо. smile




PM MAIL   Вверх
Bitter
Дата 15.2.2012, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 10
Всего: 27



Вы можете создать проект на основе шаблона SingleViewApplication. После создания заготовки, в классе AppDelegate в методе application:didFinishLaunchingWithOptions: Вы увидите следующий код:
Код

    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];
    
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;


Как можно заметить тут создается вью контроллер в строке self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];
А потом этот контроллер помещается в окно self.window.rootViewController = self.viewController;

Немного изменив это Вы добьетесь нужного результата. Нужно всего лишь создать UINavigationController и положить в него тот вью контроллер. А уже навигэйшн положить в окно.
Код

    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];
    [self.viewController setTitle:@"MainMenu"];

    UINavigationController * ncMain = [[UINavigationController alloc] initWithRootViewController:self.viewController];

    self.window.rootViewController = ncMain;
    [ncMain release];
    [self.window makeKeyAndVisible];
    return YES;


PM MAIL ICQ Skype   Вверх
fris
Дата 15.2.2012, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 15.2.2012

Репутация: нет
Всего: нет



Создал шаблон SingleViewApplication.

Там был метод тока с одной строчкой:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

    return YES;

}

Заменил return YES; указанным кодом. Выдало кучу ошибок... не понимало директиву autorelease, release. выдавало 'release' is unavaible: notavailable in automatic reference counting mod. ARC forbids explicit message send of 'release'

Ругалось на self.viewController . Ошибка: property 'viewConroller' not found on object of type 'AppDelegate*'

В общем просто так не получается. smile Похоже сгенерило автоматом код отличный от того что у вас... не хватает ему каких то определний или деклараций где-то.
PM MAIL   Вверх
fris
Дата 15.2.2012, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 15.2.2012

Репутация: нет
Всего: нет



Это исправил. Я там при выборе проекта выбрал use storyboard. теперь я все галки там поснимал. Бум рыть дальше... smile
PM MAIL   Вверх
Bitter
Дата 16.2.2012, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 10
Всего: 27



Вы выбрали Use automatic reference counter. По этому оно и ругалось на релизы. Одна строчка там была действительно потому что был выбран стрибоард. Это такая штука которая во многом упрощает жизнь. Кстати с помощью нее тоже можно сделать Navigation Based без написания какого либо кода вообще:

1. Создаем Single View Based Application с выбранным сторибоардом:
user posted image

2. Открываем созданный сторибоард в проекте
user posted image

3. Видим наш основной контроллер. Перетаскиваем на поле NavigationController
user posted image

user posted image

4. Он перетянется вместе со своим ViewController, который мы благополучно удаляем. Он нам не нужен потому что у нас есть свой. Затем правой кнопкой нажимаете на Навигэйшн контроллере и тянете на свой кнтроллер. Отпускаете и выбираете в меню RelationShip - rootViewController
user posted image

5. Вы увидите длинную стрелку, переместите контроллер на правую строну для удобства 
user posted image

6. и назначьте NavigationController Is Inital View Controller
user posted image

7. Последнее - задайте заголовок вашему контролеру (для этого надо кликнуть по NavigationBar у контроллера) и запускайте.
user posted image

Вы сделали то что нужно и не написали ни строчки smile
PM MAIL ICQ Skype   Вверх
fris
Дата 16.2.2012, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 15.2.2012

Репутация: нет
Всего: нет



в этом примере http://lookapp.ru/2009/05/15/iphone-sdk-tutorials4/ после создания навигейшен бейсед начинают править RootViewController.h в котором RootViewController наследуются от UITableViewController.
в моем случае  это ViewController.h ,    где ViewController наследуется от UIViewController. мне  теперь нужно на форму поместить тэйбл вью контролер? и его связывать с навигейшен контролером? и нужно ViewController наследовать от UITableViewController и брать код что в том примере?
PM MAIL   Вверх
fris
Дата 16.2.2012, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 15.2.2012

Репутация: нет
Всего: нет



У меня нету тех методов которые правятся в файлике RootViewController.m Это какие то произвольные методы или они обязательны в реализации , где взять те котрые мне нужны, т.е. у меня сгенерился ViewController.m для ViewController.h. А мне нужно его переделать под UITableViewController? 

Нужно ли что-то менять в файликах appdelegate.h и appdelegate.m в связи с этим?
PM MAIL   Вверх
Bitter
Дата 16.2.2012, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 10
Всего: 27



Вам нужно читать книги и задавать разные вопросы в разных темах, а не выливать поток своего непонимания в одной теме. Если вы базовых вещей не понимаете, сначала разберитесь с тем с чем имеете дело, а потом пишите программу. Если вы не понимаете как работает таблица и контроллеры то не надейтесь что напишете хоть что-то.
PM MAIL ICQ Skype   Вверх
fris
Дата 16.2.2012, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 15.2.2012

Репутация: нет
Всего: нет



Да, так и надо. сори, что морочу голову. Просто пока плаваю  smile 

Но вроде думал правильно , нужно тэйбл контролер подключать в проект

нашел различия в шаблонах между xcode 4.2.1 и 4.1, похоже мне нужно брать проект master detail application там навигейшен контролер уже связан с тэйбл контролером.
PM MAIL   Вверх
Bitter
Дата 16.2.2012, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 10
Всего: 27



Нет, не морочьтесь с шаблонами, все можно сделать с простого шаблона Simple View.
Опишите что Вам конкретно нужно. Поставить TableView в ваш вью контроллер это пара пустяков, далее связать TableView с контроллером (delegate и dataSource) и пользоваться
PM MAIL ICQ Skype   Вверх
fris
Дата 23.2.2012, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 15.2.2012

Репутация: нет
Всего: нет



Есть такой вопрос. Взял проект master detail application. Он мне создал два окна , на одном табличка, другое - детально - на форме только label. В табличку я загружаю rss. хочу когда кликнул на ячейку и перейдя на детально вывести в label.text значение кликнотого title из rss. Как я понял вызов controllerdetail происходит в методе:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

<код сгенерированный шаблоном>
}

В этом методе я создал NSDictionary* item, куда помещяю title и link текущей ячейки rss ридера. 

Как мне передать в controllerdetail этот самый item? 

В controllerdetail в нужном методе я присвою label.text = title + "[" + link + "]"


PM MAIL   Вверх
Bitter
Дата 23.2.2012, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 10
Всего: 27



Один из вариантов объявить property у вашего controllerDetail, например так

Код

.h
...
@property (nonatomic, retain) NSDictionary * dctItem;
...

.m
...
@synthesize dctItem;
 

а потом в методе didSelect... присвоить этому проперти ваш item
Код

...
[controllerdetail setDctItem:item];
...


Чтобы выполнить что нибудь в этот момент, переопределите setter как нибудь так:
Код

- (void) setDctItem:(NSDictionary *) _dctItem {
   [_dctItem retain];
   [dctItem release];
   dctItem = _dctItem;

   // TO DO something
}

PM MAIL ICQ Skype   Вверх
fris
Дата 23.2.2012, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 15.2.2012

Репутация: нет
Всего: нет



Да, спасибо. Я уже додумался до "Один из вариантов объявить property у вашего controllerDetail, например так". Вчера вечером делал, но с ошибками.
В общем прием и механика реализации как в finforms dotnet. smile

В разработке используется MVC. Пока еще не четко усвоил ее. Нодо поискать где совсем разжевано было с примером. И попрактиковаться. smile

Читаю книги, пробую чето делать... smile
PM MAIL   Вверх
fris
Дата 4.4.2012, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 15.2.2012

Репутация: нет
Всего: нет



Добрый день. Вопрос такой. Что отвечает за прокрутку UI элемента, т.е. когда пальцев проводишь вниз по экрану и контрол прокручивается. Я поместил на view обычный label и сделал его размеры больше размеров видимого экрана. и получается что вижу тока часть текста котрый вывожу в этот элемент, и пальцем не прокручивается.  smile 
PM MAIL   Вверх
fris
Дата 20.4.2012, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 15.2.2012

Репутация: нет
Всего: нет



Использовать те элементы котрые поддерживают Scroll. WebView, ScrollView...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | iOS | Следующая тема »


 




[ Время генерации скрипта: 0.0516 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.