TRTabView 0.5.2

TRTabView 0.5.2

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布上次发布2017年9月

Matthias Keiser维护。



TRTabView 0.5.2

  • Matthias Keiser

是什么

TRTabView 是一个标签视图,类似于在 iPad 的 Mobile Safari 中看到的,它使用了来自 UITableView 的熟悉的代理/数据源设计模式。

screencast

概述

TRTabView 使用一个受 UITableView 代理和数据源方法启发的代理设计模式。

标签重排、溢出行为、标签的最小/最大数量、标签的最小/最大宽度等等都可以通过实现相应的代理调用轻松配置。

对于大多数设置,都已经提供了一个合理的默认值。

支持直接显示方向更改。

请参见https://github.com/mkeiser/TRTabView 中的示例项目。

视图配置

实际的 TRTabView 只包含标签的区域。它可以自由地添加到任何父视图。它不管理每个标签要显示的实际内容。所以标签被选择时所发生的事情完全取决于您。

该项目包含 TRTabViewToolbar 类(一个 UIToolbar 的子类),它应该放置在标签视图之上以形成其顶部区域(标签的“根”)。然而,除了绘制与标签栏相匹配的背景外,它没有任何特殊功能。也可以使用 UINavigationBar 子类或自定义视图。

View Layout

如何使用

创建一个 TRTabView 并为其分配符合 TRTabViewDelegate 协议的委托。

一个最小的委托实现如下所示

/* Assume "self.model" holds an array of strings that represent the tab titles. */

- (NSUInteger)numberOfTabsInTabView:(TRTabView *)tabView {

	return [self.model count];
}

- (TRTab *)tabView:(TRTabView *)tabView tabForIndex:(NSUInteger)index {

	TRTab *tab = [tabView dequeueDefaultTabForIndex:index]; // Use default tab views
	tab.titleLabel.text = [self.model objectAtIndex:index];

	return tab;
}

/* Return the title to use in the overflow popover. */

- (NSString *)overflowTitleForIndex:(NSUInteger)index {

	return [self.model objectAtIndex:index];
}

- (void)tabView:(TRTabView *)tabView didSelectTabAtIndex:(NSUInteger)index {

	id modelObject = self.model[index];

	/* Display content view for model object */
}

当显示添加按钮(tabView.showAddButton = YES)时,您应该实现一个处理标签添加的方法

- (void)tabViewCommitTabAddition:(TRTabView *)tabView {

	id modelObject = new model object...
	NSUInteger index = new model object index...
	[self.model insertObject:modelObject atIndex:index];

	[tabView addTabAtIndex:index animated:YES];
}

如果您启用了标签删除(tabView.deleteButtonMode != TRTabViewButtonModeNever),则需要处理标签删除

- (void)tabView:(TRTabView *)tabView commitTabDeletionAtIndex:(NSUInteger)index {

	[self.model removeObjectAtIndex:index];

	[self.tabView deleteTabAtIndex:index animated:YES];
}

TRTabView 非常灵活,提供了许多定制其行为的方式。请检查头文件以获取更多方法和属性。

许可

MIT

联系

[email protected]

tristan-inc.com

github.com/mkeiser