QMUICommonTableViewController
@interface QMUICommonTableViewController : QMUICommonViewController
可作为项目内所有 UITableViewController
的基类,注意是继承自 QMUICommonViewController
而不是 UITableViewController
。
一般通过 initWithStyle:
方法初始化,对于要生成 UITableViewStylePlain
类型的列表,推荐使用 init:
方法。
提供的功能包括:
- 集成
QMUISearchController
,可通过属性shouldShowSearchBar
来快速为列表生成一个 searchBar 及 searchController,具体请查看 QMUICommonTableViewController (Search)。 - 支持仅设置 tableView:titleForHeaderInSection: 就能自动生成 sectionHeader,无需编写 viewForHeaderInSection:、heightForHeaderInSection: 等方法。
- 自带一个 QMUIEmptyView,作为 tableView 的 subview,可用于显示 loading、空或错误提示语等。
Note
emptyView 会从 tableHeaderView 的下方开始布局到 tableView 最底部,因此它会遮挡 tableHeaderView 之外的部分(比如 tableFooterView 和 cells ),你可以重写 layoutEmptyView 来改变这个布局方式
See
QMUISearchController
-
Undocumented
Declaration
Objective-C
- (instancetype)initWithStyle:(UITableViewStyle)style NS_DESIGNATED_INITIALIZER;
Swift
init(style: UITableView.Style)
-
Undocumented
Declaration
Objective-C
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;
Swift
init?(coder aDecoder: NSCoder)
-
初始化时调用的方法,会在两个 NS_DESIGNATED_INITIALIZER 方法中被调用,所以子类如果需要同时支持两个 NS_DESIGNATED_INITIALIZER 方法,则建议把初始化时要做的事情放到这个方法里。否则仅需重写要支持的那个 NS_DESIGNATED_INITIALIZER 方法即可。
Declaration
Objective-C
- (void)didInitializeWithStyle:(UITableViewStyle)style;
Swift
func didInitialize(with style: UITableView.Style)
-
获取当前的
UITableViewStyle
Declaration
Objective-C
@property (nonatomic, readonly) UITableViewStyle style;
Swift
var style: UITableView.Style { get }
-
获取当前的 tableView
Declaration
Objective-C
@property(nonatomic, strong, readonly, null_resettable) IBOutlet QMUITableView *tableView
Swift
var tableView: UnsafeMutablePointer<Int32>! { get }
-
Undocumented
Declaration
Objective-C
- (void)hideTableHeaderViewInitialIfCanWithAnimated:(BOOL)animated force:(BOOL)force;
Swift
func hideTableHeaderViewInitialIfCanWith(animated: Bool, force: Bool)
-
初始化tableView,在initSubViews的时候被自动调用。
一般情况下,有关tableView的设置属性的代码都应该写在这里。
Declaration
Objective-C
- (void)initTableView;
Swift
func initTableView()
-
布局 tableView 的方法独立抽取出来,方便子类在需要自定义 tableView.frame 时能重写并且屏蔽掉 super 的代码。如果不独立一个方法而是放在 viewDidLayoutSubviews 里,子类就很难屏蔽 super 里对 tableView.frame 的修改。 默认的实现是撑满 self.view,如果要自定义,可以写在这里而不调用 super,或者干脆重写这个方法但留空
Declaration
Objective-C
- (void)layoutTableView;
Swift
func layoutTableView()
-
是否需要在第一次进入界面时将tableHeaderView隐藏(通过调整self.tableView.contentOffset实现)
默认为NO
See
QMUITableViewDelegateDeclaration
Objective-C
- (BOOL)shouldHideTableHeaderViewInitial;
Swift
func shouldHideTableHeaderViewInitial() -> Bool