1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/575822446-RATreeView

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 20 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 16.03.2025 17:22 6088709

#RATreeView (iOS 5.0+) ##Цель Класс RATreeView предназначен для реализации дерева в приложениях iOS. Он работает как обертка для UITableView, определяя свои собственные методы делегата и источника данных для более удобной работы с деревьями данных.

##Совместимость с ARC RATreeView реализован с использованием ARC.

##Установка Чтобы использовать RATreeView в вашем приложении, просто перетяните файлы класса RATreeView в проект. Вы также можете установить RATreeView в своем проекте с помощью CocoaPods (pod "RATreeView" в вашем Podfile).

Затем просто импортируйте заголовочный файл RATreeView.h и используйте его!

##Введение Как RATreeView является оберткой для UITableView, большинство методов делегата и источника данных являются эквивалентами специфических методов протоколов делегата и источника данных UITableView. Они изменены таким образом, чтобы обеспечивать более удобное управление структурами данных в виде дерева. Также есть некоторые новые методы в протоколах для поддержки раскрытия и сворачивания строк дерева. Это должно работать на iOS Yöntemleri daha kolay veri ağacının yönetimi için değiştirilmiştir. Ayrıca protokollerde ağaç satırlarının açılıp kapanmasını desteklemek için bazı yeni yöntemler bulunur. Bu, iOS 5.0+ üzerinde çalışmalıdır.

##RATreeNodeInfo практически каждый метод протоколов RATreeViewDelegate'ın ve RATreeViewDataSource'ın имеет аргумент класса RATreeNodeInfo. RATreeNodeInfo логически связано с элементом. Цель этого параметра — предоставить программисту максимальное количество информации.

##RATreeNodeInfo practically every method of the RATreeViewDelegate's and RATreeViewDataSource's protocol has the argument of the class RATreeNodeInfo. RATreeNodeInfo logically relates to an element. The purpose of this parameter is to provide the programmer with as much information as possible.Для достижения этой цели RATreeNodeInfo имеет следующие свойства:

@property (nonatomic, getter=isExpanded, readonly) BOOL expanded;

Возвращает YES, если строка элемента раскрыта.

@property (nonatomic, readonly) NSInteger treeDepthLevel;

Возвращает уровень элемента в дереве. Значение для детей корневого элемента равно 0.

@property (strong, nonatomic, readonly) RATreeNode *parent;

Возвращает родителя объекта.

@property (strong, nonatomic, readonly) NSArray *children;

Возвращает детей объекта.

@property (strong, nonatomic, readonly) id item;

Возвращает элемент, связанный с объектом.

RATreeView

RATreeView имеет практически все свойства, которые можно найти в UITableView или UIScrollView.

Он также реализует несколько новых свойств:
@property (nonatomic) RATreeViewRowAnimation rowsExpandingAnimation;

Анимация используется для раскрытия строк. По умолчанию это RATreeViewRowAnimationTop.

@property (nonatomic) RATreeViewRowAnimation rowsCollapsingAnimation;

Анимация, используемая при сворачивании строк. По умолчанию это RATreeViewRowAnimationBottom.

Новые методы RATreeView (в сравнении с UITableView):
-(void)expandRowForItem:(id)item withRowAnimation:(RATreeViewRowAnimation)rowAnimation;
```Разворачивает строку, связанную с указанным элементом. Строка элемента должна быть видимой  её родительская строка должна быть развернута. Для невидимых элементов этот метод ничего не делает. Использует тип анимации, указанной в свойстве `rowsExpandingAnimation`.     - (void)collapseRowForItem:(id)item withRowAnimation:(RATreeViewAnimation)rowAnimation;
Сворачивает строку, связанную с указанным элементом. Все дочерние элементы указанного элемента также будут свёрнуты.

     - (void)collapseRowForItem:(id)item;
Сворачивает строку, связанную с указанным элементом. Все дочерние элементы указанного элемента также будут свёрнуты. Использует тип анимации, указанный в свойстве **rowsCollapsingAnimation**.

## Источник данных RATreeView
#####RATreeViewDataSource содержит следующие **обязательные** методы:

    (NSInteger)treeView:(RATreeView*)treeView numberOfChildrenOfItem:(id)item;
    
Этот метод должен вернуть количество дочерних элементов, содержащихся в данном элементе. Если *item* равно nil, этот метод должен вернуть количество детей для верхнего уровня элемента.

    (UITableViewCell *)treeView:(RATreeView *)treeView cellForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo
    
Этот метод запрашивает источник данных за ячейкой для вставки для конкретного *item*.

    (id)treeView:(RATreeView *)treeView child:(NSInteger)index ofItem:(id)item;
    
Этот метод возвращает дочерний элемент по указанному индексу данного элемента. Если *item* равно nil, возвращается соответствующий дочерний элемент корневого объекта.

#####RATreeViewDataSource содержит следующие **необязательные** методы:

    -(void)treeView:(RATreeView *)treeView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;

Этот метод запрашивает источник данных для выполнения вставки или удаления указанной строки.## Делегат RATreeView
Все методы делегата `RATreeViewDelegate` являются **необязательными**. **Делегат `RATreeViewDelegate` включает практически все методы, доступные в делегате `UITableViewDelegate`**. Для удобства управления именами и аргументами этих методов были слегка изменены.

Например:

```objc
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;                                    // UITableViewDelegate
- (void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath;                                // UITableViewDelegate

изменяются на:

- (CGFloat)treeView:(RATreeView *)treeView heightForRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;               // RATreeViewDelegate
- (void)treeView:(RATreeView *)treeView willBeginEditingRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;           // RATreeViewDelegate

Методы делегата RATreeView включают следующее:

Раскрытие и сворачивание

- (BOOL)treeView:(RATreeView *)treeView shouldExpandRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;

Этот метод спрашивает делегат, следует ли раскрывать строку для предоставленного item из-за взаимодействия пользователя (выбор пользователя). Вызывается для сжатых строк с хотя бы одним потомком. По умолчанию строка будет раскрыта.

- (BOOL)treeView:(RATreeView *)treeView canEditRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;

Этот метод запрашивает источник данных для проверки того, что данная строка может быть отредактирована. Если этот метод не реализован, то все строки считаются редактируемыми.```objc

  • (void)treeView:(RATreeView *)treeView willExpandRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;
Этот метод информирует делегат о том, что конкретная строка будет раскрыта из-за взаимодействия пользователя.```objc
- (BOOL)treeView:(RATreeView *)treeView shouldCollapseRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;

Этот метод запрашивает у делегата, следует ли свернуть строку для данного item из-за взаимодействия пользователя. Вызывается для раскрытых строк с хотя бы одним потомком. По умолчанию строка будет свернута.

- (void)treeView:(RATreeView *)treeView willCollapseRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;

Этот метод уведомляет делегата о том, что конкретная строка будет свернута из-за взаимодействия пользователя.

- (BOOL)treeView:(RATreeView *)treeView shouldExpandItemAfterDataReload:(id)item treeDepthLevel:(NSInteger)treeDepthLevel;
```Этот метод запрашивает у делегата, следует ли раскрыть конкретную строку после перезагрузки данных. Этот метод вызывается для каждого элемента после каждой перезагрузки данных в RATreeView. В случае, если делегат возвращает *YES* для элемента, чей родитель (или родители) еще не раскрыт, все нераскрытые родители будут раскрыты.

#### Настройка строк для таблицы

     - (CGFloat)treeView:(RATreeView *)treeView heightForRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;
Запрашивает у делегата высоту строки с указанным *item*.

     - (NSInteger)treeView:(RATreeView *)treeView indentationLevelForRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;
Запрашивает у делегата уровень отступа для строки с указанным *item*.

     - (void)treeView:(RATreeView *)treeView willDisplayCell:(UITableViewCell *)cell forItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;
Уведомляет делегата о том, что дерево собирается отрисовать ячейку для указанного *item*.#### Управление всплывающими панелями

```objc
- (void)treeView:(RATreeView *)treeView accessoryButtonTappedForRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;

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

Управление выборами

- (id)treeView:(RATreeView *)treeView willSelectRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;

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

- (void)treeView:(RATreeView *)treeView didSelectRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;

Уведомляет делегата о том, что указанная строка была выбрана.

- (id)treeView:(RATreeView *)treeView willDeselectRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;

Уведомляет делегата о том, что указанная строка готова к снятию со статуса "выбран". Верните другой элемент, чтобы снять со статуса "выбран" другую строку. Элемент, возвращаемый этим методом, должен быть видимым (то есть его родительская строка должна быть раскрыта).

- (void)treeView:(RATreeView *)treeView didDeselectRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;

Уведомляет делегата о том, что указанная строка больше не выделена.

Редактирование строк дерева

- (void)treeView:(RATreeView *)treeView willBeginEditingRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;
```Уведомляет делегата о том, что дерево готово перейти в режим редактирования. Этот метод вызывается при горизонтальном свайпе пользователя по строке.     - (void)treeView:(RATreeView *)treeView didEndEditingRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;
     
Уведомляет делегата о том, что дерево покинуло режим редактирования.
     
    - (UITableViewCellEditingStyle)treeView:(RATreeView *)treeView editingStyleForRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;

Запрашивает у делегата стиль редактирования строки, связанной с конкретным элементом.

	- (NSString *)treeView:(RATreeView *)treeView titleForDeleteConfirmationButtonForRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;
	
Изменяет стандартный заголовок кнопки подтверждения удаления. По умолчанию кнопка подтверждения удаления, которая появляется справа от ячейки, имеет заголовок "Удалить".

    - (BOOL)treeView:(RATreeView *)treeView shouldIndentWhileEditingRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;
    
Запрашивает у делегата, следует ли отступать фон указанной строки во время редактирования дерева.


#### Отслеживание удаления представлений

    - (void)treeView:(RATreeView *)treeView didEndDisplayingCell:(RATreeViewCell *)cell forItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;

Уведомляет делегата о том, что указанная ячейка была удалена из дерева.

#### Копирование и вставка содержимого строк

	- (BOOL)treeView:(RATreeView *)treeView shouldShowMenuForRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;

Запрашивает у делегата, следует ли показывать меню редактирования для определенной строки.

	- (BOOL)treeView:(RATreeView *)treeView canPerformAction:(SEL)action forRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo withSender:(id)sender;Запрашивает у делегата, следует ли пропустить команду "Копировать" или "Вставить" в меню редактирования для данной строки.

```objective-c
- (void)treeView:(RATreeView *)treeView performAction:(SEL)action forRowAtIndexPath:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo withSender:(id)sender;

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

Управление выделением в дереве - (BOOL)treeView:(RATreeView *)treeView shouldHighlightRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;

Запрашивает делегата, следует ли выделить указанную строку.

- (BOOL)treeView:(RATreeView *)treeView didHighlightRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;

Уведомляет делегата о том, что указанная строка была выделена.

- (BOOL)treeView:(RATreeView *)treeView didUnhighlightRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo;

Уведомляет делегата о том, что выделение было удалено со строки, связанной с указанным элементом.

##Типы Для лучшей энкапсуляции RATreeView объявляет некоторые свои перечисления, эквивалентные перечислениям, объявленным для UITableView и UITableViewCell. Эти перечисления используются как типы свойств и в вызовах методов RATreeView.

Эквивалент для UITableViewStyle:

typedef enum {
  RATreeViewStylePlain = 0,
  RATreeViewStyleGrouped
} RATreeViewStyle;

Эквивалент для UITableViewCellSeparatorStyle:

typedef enum RATreeViewCellSeparatorStyle {
  RATreeViewCellSeparatorStyleNone = 0,
  RATreeViewCellSeparatorStyleSingleLine,
  RATreeViewCellSeparatorStyleSingleLineEtched
} RATreeViewCellSeparatorStyle;

Эквивалент для UITableViewScrollPosition:

typedef enum RATreeViewScrollPosition {
  RATreeViewScrollPositionNone = 0,
  RATreeViewScrollPositionTop,
  RATreeViewScrollPositionMiddle,
  RATreeViewScrollPositionBottom
} RATreeViewScrollPosition;

Эквивалент для UITableViewRowAnimation:

typedef enum RATreeViewRowAnimation {
  RATreeViewRowAnimationNone = 0,
  RATreeViewRowAnimationRight,
  RATreeViewRowAnimationLeft,
  RATreeViewRowAnimationTop,
  RATreeViewRowAnimationBottom,
  RATreeViewRowAnimationMiddle,
  RATreeViewRowAnimationAutomatic
} RATreeViewRowAnimation;

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/575822446-RATreeView.git
git@api.gitlife.ru:oschina-mirror/575822446-RATreeView.git
oschina-mirror
575822446-RATreeView
575822446-RATreeView
master