Чтение онлайн

на главную - закладки

Жанры

iOS. Приемы программирования

Нахавандипур Вандад

Шрифт:

5. В Xcode выберите меню File-New-File (Файл-Новый-Файл).

6. Убедитесь, что в левой части диалогового окна категория iOS выбрана в качестве основной и при этом также выбрана подкатегория Cocoa Touch. Далее в правой части диалогового окна выберите класс Objective-C (рис. 4.21).

Рис. 4.21. Создание нового класса для табличного вида с контроллером

7. На следующем экране вам будет предложено выбрать суперкласс для нового класса. Это очень важный этап. Убедитесь, что в качестве суперкласса задан UITableViewController.

Удостоверьтесь, что все остальные настройки у вас точно такие же, как и у меня на рис. 4.22. Когда все будет готово, нажмите кнопку Next (Далее).

Рис. 4.22. Задаем суперкласс для нового объекта, который станет контроллером табличного вида

8. На следующем экране вы сможете сохранить табличный контроллер вида в проекте. Сохраните его как класс ViewController и нажмите кнопку Create (Создать).

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

#import «AppDelegate.h»

#import «ViewController.h»

@implementation AppDelegate

— (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

ViewController *controller = [[ViewController alloc]

initWithStyle: UITableViewStylePlain];

self.window = [[UIWindow alloc]

initWithFrame: [[UIScreen mainScreen] bounds]];

self.window.rootViewController = controller;

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}

Теперь, если вы попытаетесь скомпилировать проект, компилятор выдаст вам следующие предупреждения [3] :

ViewController.m:47:2: Potentially incomplete method implementation.

3

Первая строка: «Потенциально неполная реализация метода». Вторая строка: «Неполная реализация метода». — Примеч. пер.

ViewController.m:54:2: Incomplete method implementation.

Итак, необходимо иметь в виду, что компилятор выдает определенные предупреждения, об устранении которых придется позаботиться в файле реализации контроллера вида. Открыв этот файл, вы увидите, что Apple вставила в шаблон класса табличного контроллера вида макрокоманды #warning — инструкции для компилятора (именно они приводят к тому, что на экран выводятся показанные ранее предупреждения). Одно из предупреждений находится в методе numberOfSectionsInTableView:, другое — в методе tableView: numberOfRowsInSection:. Мы видим на экране предупреждения, потому что не запрограммировали логику для этих методов. Минимальная информация, необходимая табличному контроллеру вида, — это количество разделов для отображения, количество строк для отображения, а также объект ячейки, который должен отображаться в каждой

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

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

Перейдем к файлу реализации табличного контроллера вида и убедимся, что у нас есть массив строк (просто для примера), которыми мы можем заполнить табличный вид:

#import «ViewController.h»

static NSString *CellIdentifier = @"Cell";

@interface ViewController 

@property (nonatomic, strong) NSArray *allItems;

@end

@implementation ViewController

— (id)initWithStyle:(UITableViewStyle)style

{

self = [super initWithStyle: style];

if (self) {

// Специальная инициализация

self.allItems = @[

@"Anthony Robbins",

@"Steven Paul Jobs",

@"Paul Gilbert",

@"Yngwie Malmsteen"

];

[self.tableView registerClass: [UITableViewCell class]

forCellReuseIdentifier: CellIdentifier];

}

return self;

}

— (void) viewDidLoad{

[super viewDidLoad];

}

— (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{

return 1;

}

— (NSInteger)tableView:(UITableView *)tableView

numberOfRowsInSection:(NSInteger)section{

return self.allItems.count;

}

— (UITableViewCell *)tableView:(UITableView *)tableView

cellForRowAtIndexPath:(NSIndexPath *)indexPath{

UITableViewCell *cell = [tableView

dequeueReusableCellWithIdentifier: CellIdentifier

forIndexPath: indexPath];

cell.textLabel.text = self.allItems[indexPath.row];

return cell;

}

@end

Теперь, запустив приложение, мы увидим результат, напоминающий рис. 4.23.

Рис. 4.23. Строки правильно отображаются в табличном виде

Поделиться:
Популярные книги

Хозяин Теней 2

Петров Максим Николаевич
2. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 2

Черный Маг Императора 9

Герда Александр
9. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 9

Врубель

Коган Дора Зиновьевна
Жизнь в искусстве
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Врубель

Законы Рода. Том 9

Мельник Андрей
9. Граф Берестьев
Фантастика:
городское фэнтези
попаданцы
аниме
дорама
фэнтези
фантастика: прочее
5.00
рейтинг книги
Законы Рода. Том 9

Убивать чтобы жить 5

Бор Жорж
5. УЧЖ
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 5

Черный рынок

Вайс Александр
6. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
Черный рынок

Мл. сержант. Назад в СССР. Книга 3

Гаусс Максим
3. Второй шанс
Фантастика:
альтернативная история
6.40
рейтинг книги
Мл. сержант. Назад в СССР. Книга 3

Последний Паладин. Том 12

Саваровский Роман
12. Путь Паладина
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Последний Паладин. Том 12

Абсурдистан

Штейнгарт Гари
Проза:
современная проза
5.00
рейтинг книги
Абсурдистан

Чужое наследие

Кораблев Родион
3. Другая сторона
Фантастика:
боевая фантастика
8.47
рейтинг книги
Чужое наследие

На границе империй. Том 6

INDIGO
6. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.31
рейтинг книги
На границе империй. Том 6

Ратник

Ланцов Михаил Алексеевич
3. Помещик
Фантастика:
альтернативная история
7.11
рейтинг книги
Ратник

Темный Лекарь 9

Токсик Саша
9. Темный Лекарь
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Темный Лекарь 9

Здравствуй, Мир!

Француз Михаил
Фантастика:
рпг
попаданцы
6.25
рейтинг книги
Здравствуй, Мир!