Июл 28

В первой части посвященной SDK iPhone 3.0 серии мы рассмотрели принцип внедрения в приложения iPhone менеджера отмены действий “NSUndoManager” и собственно отмену/повтор с помощью встряски.

В этот раз добавим к простейшему приложению iPhone встроенную возможность отправки электронных сообщений — с помощью предусмотренного в новой версии фреймворка “MessageUI“.

Теоретически, ни отправка электронных сообщений, ни “MessageUI” сами по себе новинкой не являются. До выхода версии 3.0 у “MessageUI” был свой частный фреймворк, а из приложений можно отправлять сообщения через “mailto:// URLs” (хотя возможности функции были ограничены). Теперь же опция отправки стала не только полнофункциональной, но и удобной в работе.

Мы начнем с рабочего кода для простого приложения: интерфейс будет включать всего одну кнопку. Добавим код с выводом по нажатию кнопки предложения о создании сообщения, возможностью предварительного заполнения поля “subject” и содержимого. Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (Оцените приложение)
Загрузка ... Загрузка ...
Нет комментариев »

Июл 24

Поздравляем всех с выходом iPhone 3.0!

В связи с радостным событием и с открывшейся возможностью обсудить больше не конфиденциальную новинку, предлагаем вашему вниманию серию уроков “Новое в iPhone 3.0″. 

В первом из них рассмотрим добавление к приложению возможности отмены/повтора действий с помощью встряхивания.

NSUndoManager

За функции отмены/повтора отвечает класс “NSUndoManager“, информацию о котором можно найти здесь (на англ. языке). Принцип его работы заключается в хранении стека сообщений, который при пересылке последовательно отменяет последнее действие, потом предпоследнее и так далее до возвращения в исходное состояние. Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (2 голосов, средний: 3.00 из 5)
Загрузка ... Загрузка ...
Нет комментариев »

Июл 22

С помощью представления с подробным отображением (drill down table view) можно вывести на экран нижележащие уровни для нужных объектов. Для выбранной строки это будет новое табличное представление с относящимися к выбранному объекту данными. Процесс повторяется до тех пор, пока для элемента не останется категорий нижнего уровня. Это происходит при отображении детализированного представления, не являющегося “UITableView“. 

Создание проекта

В XCode создайте новый проект, выбрав опцию “Navigation-Based Application“. Для своего я выбрал имя “DrillDownApp“, которое и будет использоваться в уроке.

Один единственный “UITableView”

Вместо создания трех различных объектов “UITableView” для отображения трех различных уровней воспользуемся всего одним (и одним контроллером табличного представления). По духу такой подход близок веб-программированию, где для вывода списка продуктов достаточно одной страницы. Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (Оцените приложение)
Загрузка ... Загрузка ...
Нет комментариев »

Июл 16

Обладатели iPhone часто начинают работать с ними, много не зная, а позже понимают, что им сложно ориентироваться в происходящем. Этот урок посвящен запуску приложения “Hello World” на симуляторе iPhone. Те, кому лень читать 10 предложенных для этого шагов, могут сразу перейти к странице с видеоуроком.

Создаем урок “hello world” за 10 шагов

Чтобы приступить к созданию в симуляторе приложения “Hello World“, понадобится следующее:

1. Mac с процессором Intel и ОС 10.5.7 или последней версией Leopard
2. Учетная запись Apple Developer (которую после регистрации можно получить бесплатно). Для программирования приложений для iPhone необходим набор средств iPhone SDK. Для тестирования кода на устройстве (iPhone) потребуется лицензия разработчика, которая обойдется в 99 долл. (299 долл. за корпоративную версию). Чтобы запустить в симуляторе iPhone первое приложение “Hello World“, выполните перечисленные ниже шаги. В этом уроке мы подготовим все необходимое для последующей разработки крупных приложений. Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (7 голосов, средний: 3.86 из 5)
Загрузка ... Загрузка ...
Нет комментариев »

Июл 14

Если вы разработчик (что вероятнее всего, учитывая факт чтения данной статьи), то, по всей вероятности, у вас уже есть или должна появиться учетная запись в Twitter. В последнее время эта социальная сеть обрела такую популярность, что было бы глупо не интегрировать Twitter тем или иным способом в собственные приложения iPhone.
Сделать приложения более социально ориентированными с помощью Twitter можно разными способами. Например, предусмотрев автоматическое подключение к сети при нахождении определенного предмета в игре или победе над персонажем. При этом все друзья узнают о достижениях пользователя, а вам подобный ход добавит популярности. Кстати, а как насчет создания собственного Twitter-клиента (только не рассчитывайте продать мой урок в App Store).
Twitter предлагает элементарный пользовательский интерфейс, с помощью которого с сетью легко и просто взаимодействовать. В моем персональном блоге я как раз публикую серию статей о создании Twitter-клиента для Mac, кодом из которой мы частично воспользуемся.
Перед началом хочу остановиться ещё на одном моменте: создание интерфейса и установку связей со спецификаторами “IBOutlet” я рассмотрю очень бегло. Если что-то будет непонятно, лучше начать с более простых уроков. Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (2 голосов, средний: 5.00 из 5)
Загрузка ... Загрузка ...
Комментариев: 2 »

Июл 12

Метод по умолчанию “UITableViewCell” позволяет отображать текст (с текстовым свойством) или изображение (со свойством изображения). А вот вывести данные в нескольких столбцах или строках не получится. В шестом уроке серии, посвященной “UITableView“, мы воспользуемся кодом предыдущего урока. Вот как будет в итоге выглядеть приложение:

Простым указанием текстового свойства для “UITableViewCell” такого результата не добиться. Чтобы решить проблему, добавим к представлению содержимого ячейки две метки. Указав соответствующие координаты, сделаем так, чтобы они выводились одна над другой. Согласно документации Apple, чтобы не менять поведения ячейки по умолчанию, объекты “subview” необходимо добавлять к представлению содержимого ячейки. Соответственно, мы не будет наследовать “UITableViewCell“. Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (Оцените приложение)
Загрузка ... Загрузка ...
Нет комментариев »

Июл 11

Еще один способ ускорить для пользователя получение данных — отображение индекса для табличного представления, о котором и пойдет речь в пятом уроке. Как обычно, воспользуемся кодом предыдущего урока. Вот как будет выглядеть итоговое приложение:

Создание индекса

Для начала нам нужно создать массив с выводимыми на экран индексными значениями. Требуемый тип значений для массива — “NSString“. Согласно документации Apple, стиль табличного представления должен быть установлен на “UITableViewStylePlain“. Однако настройка на “UITableViewStyleGrouped” ошибкой тоже не считается. Массив возвращается в методе “sectionIndexTitlesForTableView“, а код при этом выглядит так:

finalapp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//файл "RootViewController.m"
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {

if(searching)
return nil;

NSMutableArray *tempArray = [[NSMutableArray alloc] init];
[tempArray addObject:@"1"];
[tempArray addObject:@"2"];
[tempArray addObject:@"3"];
[tempArray addObject:@"4"];
[tempArray addObject:@"5"];
[tempArray addObject:@"6"];
[tempArray addObject:@"7"];
[tempArray addObject:@"8"];
[tempArray addObject:@"9"];
[tempArray addObject:@"10"];
[tempArray addObject:@"11"];
[tempArray addObject:@"12"];
[tempArray addObject:@"13"];
[tempArray addObject:@"14"];
[tempArray addObject:@"15"];
[tempArray addObject:@"16"];
[tempArray addObject:@"17"];
[tempArray addObject:@"18"];
[tempArray addObject:@"19"];
[tempArray addObject:@"20"];
[tempArray addObject:@"21"];
[tempArray addObject:@"22"];
[tempArray addObject:@"23"];
[tempArray addObject:@"24"];
[tempArray addObject:@"25"];
[tempArray addObject:@"26"];

return tempArray;
}

Приведенный выше код создает массив и возвращает его. В массив можно добавить буквы — от ‘A’ до ‘Z’. При поиске по табличному представлению массив не возвращается, а индексное представление не отображается.

Обработка событий

При щелчке на элементе индекса выводится начинающийся с него раздел. При этом вызывается событие “tableView:sectionForSectionIndexTitle:atIndex“, возвращающее индекс отображаемого раздела. Поскольку в нашем источнике данных всего 2 раздела и 26 значений индекса, код выглядит следующим образом:

1
2
3
4
5
6
7
8
//файл "RootViewController.m"
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {

if(searching)
return -1;

return index % 2;
}

При поиске по табличному преставлению индекс раздела не возвращается. Исходные данные немного изменены — добавлены текстовые объекты, наглядно демонстрирующие выбор раздела. Поскольку индекс выводится в непосредственной близости от вспомогательного представления, последнее устанавливается на “UITableViewCellAccessoryNone“.

Заключение

Простой реализацией двух методов мы создали для табличного представления индекс. Кстати, думаю, что некоторые методы Apple просто скрыла (например, мы не можем предложить увеличительное стекло, как в приложении с контактами). Если у кого-то есть идеи по реализации такой функции — поделитесь.

Исходный код скачать можно [здесь]

Текст оригинальной статьи на английском языке [здесь]

Уважаемые читатели, данный материал был переведен и подготовлен к публикации проектом LookApp.ru, при публикации на другом сайте ссылка на LookApp.ru обязательна.

1 звезда2 звезд3 звезд4 звезд5 звезд (Оцените приложение)
Загрузка ... Загрузка ...
Комментариев: 6 »

Июл 10

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

Добавление панели поиска

Для начала добавим к сегментированному представлению панель поиска. Двойным щелчком на файле “RootViewController.nib” откройте редактор интерфейсов Interface Builder. Перетащите в nib-файл объект “UISearchBar“. В XCode откройте файл “RootViewController.h” и задекларируйте переменную типа “UISearchBar” с названием “searchBar” и ключевым словом “IBoutlet” (для отображения в IB). Соедините переменную с объектом “UISearchBar” и настройте делегата “UISearchBar” на объект “File’s Owner“. Тем самым мы уведомляем “RootViewController” обо всех событиях, генерируемых на панели поиска. Вот как при этом будет выглядеть заголовочный файл (я добавил переменных и вспомогательный метод для поиска): Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (Оцените приложение)
Загрузка ... Загрузка ...
Нет комментариев »

Июл 09

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

Подготовка исходных данных

Как видим, все страны разделены на две категории: “Countries to visit” (Страны, которые нужно посетить) и “Countries visited” (Посещенные страны).
Для сгруппированной информации источник данных создается особым способом — упрощающим вывод данных. Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (1 голосов, средний: 5.00 из 5)
Загрузка ... Загрузка ...
Нет комментариев »

Июл 08

В этом уроке мы познакомимся с навигацией по детализированному представлению с параллельной передачей данных. Для следующей статьи серии “UITableView” воспользуемся исходным кодом из первого урока.

Создаем детализированное представление

Откройте редактор интерфейсов Interface Builder и, выполнив File -> New -> View (выберите Cocoa Touch), сохраните объект в папку приложения под именем “DetailView“. Щелчком на кнопке “Add” подтвердите добавление представления в текущий проект. Возможно, нужно будет перетащить представление (в XCode) в папку “Resources“. Обзаведясь представлением, создадим класс контроллера представления для управления им на экране. В XCode выберите “Classes” и выполните File -> New File. В разделе “iPhone OS” укажите подкласс “UIViewController“, присвоив ему имя “DetailViewController” (расширение не менять). Теперь привяжем представление к только что созданному контроллеру. В редакторе IB выделите объект “File’s Owner” и откройте окно инспектора “Identity Inspector“. Для класса “Identity” выберите тип “DetailViewController“, после чего откройте инспектор связей “Connections Inspector” и создайте связь между свойствами представления и объектом представления в nib-файле. Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (1 голосов, средний: 5.00 из 5)
Загрузка ... Загрузка ...
Нет комментариев »