Описание: Параметры строки в таблице. Используется в источнике данных для формирования массива строк, которые содержат экспандер.
@interface GridRow : NSObject{
NSMutableArray *children; // Массив дочерних строк
}
@property (nonatomic, readonly) NSString *title; // Заголовок строки
@property (nonatomic, readonly) NSArray *values; // Значение строки
@property (nonatomic, readonly) GridRow *parent; // Родительская строка
@property (nonatomic) BOOL isExpanded; // Признак того, что строка развёрнута
// Инициализирует строку по заголовку и данным
- (id)initWithHeader:(NSString *)header andData:(NSArray *)data;
// Инициализирует строку по заголовку, данным и родителю
- (id)initWithHeader:(NSString *)header andData:(NSArray *)data andParent:(GridRow *)parentRow;
// Возвращает дочерную строку по её индексу
- (GridRow *)childAtIndex:(NSInteger)index;
// Возвращает количество дочерних строк
- (NSInteger)childrenCount;
// Добавляет дочернюю строку
- (void)addChild:(GridRow *)row;
// Возвращает уровень строки в иерархии всех строк таблицы
- (NSInteger)level;
@end
#import "GridRow.h"
@implementation GridRow
@synthesize title, values, parent, isExpanded;
// Инициализирует строку по заголовку и данным
- (id)initWithHeader:(NSString *)header andData:(NSArray *)data{
if ((self = [super init])) {
title = [[NSString stringWithString:header] retain];
values = [[NSArray arrayWithArray:data] retain];
parent = nil;
isExpanded = NO;
return self;
}
else
return nil;
}
// Инициализирует строку по заголовку, данным и родителю
- (id)initWithHeader:(NSString *)header andData:(NSArray *)data andParent:(GridRow *)parentRow {
if ((self = [self initWithHeader:header andData:data])) {
parent = parentRow;
[parent addChild:self];
return self;
}
else
return nil;
}
// Возвращает дочерную строку по её индексу
- (GridRow *)childAtIndex:(NSInteger)index {
if (children && index < [children count ])
return [children objectAtIndex:index];
else
return nil;
}
// Возвращает количество дочерних строк
- (NSInteger)childrenCount {
return [children count];
}
// Добавляет дочернюю строку
- (void)addChild:(GridRow *)row {
if (!children)
children = [[NSMutableArray new] retain];
[children addObject:row];
}
// Возвращает уровень строки в иерархии всех строк таблицы
- (NSInteger)level {
if (parent)
return [parent level] + 1;
else
return 0;
}
// Устанавливает признак того, развёрнута ли строка таблицы
- (void)setIsExpanded:(BOOL)expanded {
if ([children count])
isExpanded = expanded;
else
isExpanded = NO;
}
- (void)dealloc {
[title release];
[values release];
[children release];
[super dealloc];
}
@end
См. также: