В Xcode запустите новый проект с шаблоном приложения на основе представления (только для iPhone).
В xib для представления (ProjectNameViewController.xib) с помощью Interface Builder добавьте TableView.
Создайте новый подкласс класса Objective C класса UITableView, в заголовочном файле добавьте протокол UITableViewDataSource и добавьте этот атрибут:
NSArray *data;
В файле реализации реализовано 2 обязательных метода:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [data count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString* identifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
}
cell.textLabel.text = [data objectAtIndex:indexPath.row];
return cell;
}
В методе init добавьте это:
data = [[NSArray arrayWithObjects:@"First", @"Second", @"Third", nil] retain];
Возвращаясь к Интерфейсному Разработчику, добавьте новый объект с предыдущим настраиваемым классом (инспектор удостоверений).
В UITableView (в Интерфейсном Разработчике в Инспекторе соединений) добавьте источник данных розетки к предыдущему объекту.
Запустите приложение, оно покажет таблицу с данными, затем при прокрутке вверх произойдет сбой с сигналом: «EXC_BAD_ACCESS» в главном потоке (исключение не выдано).
Я едва новичок в Xcode + Interface Builder с Cocoa Framework, я пытаюсь понять Movel-View-Controller для создания приложений, которые имеют повторно используемый код, но я не могу понять, как я могу разделить объекты для создания контроллеры для каждого элемента пользовательского интерфейса в приложении, потому что в этом случае, если я помещаю методы в класс, субклассируемый владельцем файла (с протоколом, аналогичным описанному выше в классе), все это работает.
Но класс владельца файла - это ViewController, и я хочу, чтобы TableView был отделен от любого другого объекта в приложении. Если это не тот способ сборки приложения (рекомендуемый способ), скажите мне.
Заранее спасибо.