//
//  BaseTableView.h
//  keyBoard
//
//  通用表格基类：
//  - 统一一些默认配置（背景色、分割线、键盘收起等）
//  - 可选接入 DZNEmptyDataSet（空数据占位视图），默认开启，按需关闭
//  - 通过 __has_include 判断三方库是否存在；即使工程未集成该库也能正常编译
//

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

typedef void(^KBEmptyAction)(void);

@interface BaseTableView : UITableView


#pragma mark - 空数据占位（DZNEmptyDataSet，可开关）
/// 是否启用空数据占位（默认 YES）。若工程未集成 DZNEmptyDataSet，此开关不生效但不会影响编译。
@property (nonatomic, assign) BOOL useEmptyDataSet;
/// 标题（默认："暂无数据"）
@property (nonatomic, copy, nullable) NSString *emptyTitleText;
/// 描述（可选）
@property (nonatomic, copy, nullable) NSString *emptyDescriptionText;
/// 占位图（可选）
@property (nonatomic, strong, nullable) UIImage *emptyImage;
/// 按钮标题（可选）
@property (nonatomic, copy, nullable) NSString *emptyButtonTitle;
/// 垂直偏移（默认 0）
@property (nonatomic, assign) CGFloat emptyVerticalOffset;
/// 空视图是否允许滚动（默认 YES）
@property (nonatomic, assign) BOOL emptyShouldAllowScroll;
/// 点击整体视图回调（可选）
@property (nonatomic, copy, nullable) KBEmptyAction emptyDidTapView;
/// 点击按钮回调（可选）
@property (nonatomic, copy, nullable) KBEmptyAction emptyDidTapButton;

/// 触发刷新空数据视图（若集成了 DZNEmptyDataSet 则调用其 reloadEmptyDataSet）
- (void)kb_reloadEmptyDataSet;

/// 使用 LYEmptyView 在表格页快速挂载一套统一样式的空态视图（与 DZNEmptyDataSet 二选一）
/// 注意：调用该方法会自动关闭本类内置的 DZNEmptyDataSet（useEmptyDataSet = NO），避免冲突。
/// - Parameters:
///   - image: 占位图（可空）
///   - title: 标题（默认“暂无数据”）
///   - detail: 描述（可空）
///   - buttonTitle: 按钮标题（可空，传空则不展示按钮）
///   - tapHandler: 点击空白区域回调（可空）
///   - buttonHandler: 按钮点击回调（可空）
- (void)kb_makeDefaultEmptyViewWithImage:(nullable UIImage *)image
                                   title:(nullable NSString *)title
                                  detail:(nullable NSString *)detail
                             buttonTitle:(nullable NSString *)buttonTitle
                              tapHandler:(nullable KBEmptyAction)tapHandler
                           buttonHandler:(nullable KBEmptyAction)buttonHandler;

@end

NS_ASSUME_NONNULL_END
