iOS开发之UITableView与UISearchController实现搜索及上拉加载,下拉刷新实例代码

2025-05-29 0 84

废话不多说了,直接给大家贴代码了。

具体代码如下所示:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190
#import "ViewController.h"

#import "TuanGouModel.h"

#import "TuanGouTableViewCell.h"

#define kDeviceWidth [UIScreen mainScreen].bounds.size.width

#define kDeviceHeight [UIScreen mainScreen].bounds.size.height

@interface ViewController ()<UITableViewDelegate,UITableViewDataSource,UISearchResultsUpdating>

{

UISearchController * _sscller;

}

@property(nonatomic,strong)NSMutableArray* secArrM;

@property(nonatomic,strong) NSMutableArray* tuanGouArrM;

@property(nonatomic,strong)UITableView* myTable;

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

[self createNa];

self.myTable.backgroundColor = [UIColor lightGrayColor];

[self createsecB];

[self setupRefresh];

self.title = @"美食家";

}

#pragma mark - 导航

-(void)createNa{

UIBarButtonItem *rightItem = [[UIBarButtonItem alloc]initWithTitle:@"Edit" style:UIBarButtonItemStylePlain target:self action:@selector(tableEdit:)];

self.navigationItem.rightBarButtonItem = rightItem;

self.title = @"美食家";

}

// 点击导航右侧编辑按钮时,让表格可编辑

-(void)tableEdit:(UIBarButtonItem *) btnItem{

// if (self.myTable.editing == NO ) { // 没有处于编辑状态,导航按钮文字为“Edit”

// // 点击“编辑”文字,让表格处于编辑状态,并把按钮的文字修改为“Done"

// self.myTable.editing = YES;

//

// }else{

// // 编辑状态下,点击”Done"按钮,取消表格的编辑状态,修改导航按钮文字为"Edit"

// self.myTable.editing = NO;

// btnItem.title = @"Edit" ;

// self.navigationItem.rightBarButtonItems = @[btnItem];

// }

}

-(void)createsecB{

_sscller = [[UISearchController alloc]initWithSearchResultsController:nil];

_sscller.searchResultsUpdater = self;

self.myTable.tableHeaderView = _sscller.searchBar;

}

-(NSMutableArray *)secArrM{

if (_secArrM == nil) {

return _secArrM = [NSMutableArray array];

}else{

return _secArrM;

}

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

}

#pragma mark - 表格懒加载

-(UITableView *)myTable{

if (_myTable == nil) {

_myTable = [[UITableView alloc]initWithFrame:CGRectMake(, , kDeviceWidth, kDeviceHeight) style:UITableViewStylePlain];

[self.view addSubview:_myTable];

_myTable.delegate = self;

_myTable.dataSource = self;

_myTable .separatorStyle = UITableViewCellSeparatorStyleSingleLineEtched;

}

return _myTable;

}

#pragma mark - 团购数据懒加载

-(NSMutableArray *)tuanGouArrM{

if (_tuanGouArrM == nil) {

_tuanGouArrM = [NSMutableArray array];

NSString* plistPath = [[NSBundle mainBundle]pathForResource:@"tgs.plist" ofType:nil];

NSArray* tuanArr = [NSArray arrayWithContentsOfFile:plistPath];

for (NSDictionary* dict in tuanArr) {

TuanGouModel* model =[[TuanGouModel alloc]initWithDict:dict];

[_tuanGouArrM addObject:model];

}

}

return _tuanGouArrM;

}

#pragma mark - 数据源协议

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

if ( _sscller.active ) { //搜索结果表格

return self.secArrM.count;

}

else{

return self.tuanGouArrM.count;

}

}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

//注册

[tableView registerClass:[TuanGouTableViewCell class] forCellReuseIdentifier:@"tuanCell"];

//重置

TuanGouTableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"tuanCell"forIndexPath:indexPath];

cell.backgroundColor = [UIColor yellowColor];

// 选中风格

cell.selectionStyle = UITableViewCellSelectionStyleNone;

if( !_sscller.active ){

cell.tuanGouModel = self.tuanGouArrM[indexPath.row];

}else{ //搜索结果

cell.tuanGouModel = self.secArrM[indexPath.row];

}

return cell;

}

#pragma mark - TableV协议

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

return ;

}

-(void)updateSearchResultsForSearchController:(UISearchController *)searchController{

[self.secArrM removeAllObjects];

for (int j = ; j < _tuanGouArrM.count; j++) {

TuanGouModel* model =[[TuanGouModel alloc]init];

model = _tuanGouArrM[j];

if ([model.title isEqualToString: _sscller.searchBar.text]) {

[self.secArrM addObject: model];

}

}

[self.myTable reloadData];

}

//允许Menu菜单

-(BOOL)tableView:(UITableView *)tableView shouldShowMenuForRowAtIndexPath:(NSIndexPath *)indexPath

{

return YES;

}

//每个cell都可以点击出现Menu菜单

-(BOOL)tableView:(UITableView *)tableView canPerformAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender

{

return YES;

}

-(void)tableView:(UITableView *)tableView performAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender{

NSLog(@"长按");

if (action ==@selector(copy:)) {

NSLog(@"copy");

}

if (action ==@selector(cut:)) {

NSLog(@"cut");

}

if (action ==@selector(paste:)) {

NSLog(@"paste");

}

if (action ==@selector(selectAll:)) {

NSLog(@"selectAll");

}

}

//上拉加载

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{

if (indexPath.row == self.tuanGouArrM.count - ) {

NSLog(@"最后一行");

TuanGouModel* model =[[TuanGouModel alloc]init];

model = _tuanGouArrM[arcrandom()%];

[_tuanGouArrM addObject:model];

[self.myTable reloadData];

}

}

//下拉刷新

-(void)setupRefresh

{

//.添加刷新控件

UIRefreshControl *control=[[UIRefreshControl alloc]init];

[control addTarget:self action:@selector(refreshStateChange:) forControlEvents:UIControlEventValueChanged];

[self.myTable addSubview:control];

//.马上进入刷新状态,并不会触发UIControlEventValueChanged事件

[control beginRefreshing];

// .加载数据

[self refreshStateChange:control];

}

/**

* UIRefreshControl进入刷新状态:加载最新的数据

*/

-(void)refreshStateChange:(UIRefreshControl *)control

{

TuanGouModel* model =[[TuanGouModel alloc]init];

model = _tuanGouArrM[arcrandom()%];

[_tuanGouArrM insertObject:model atIndex:];

[self.myTable reloadData];

NSLog(@"第一行");

[control endRefreshing];

}

//指示是否允许高亮显示选中的行

- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath{

return YES;

}

//选中某行时执行

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

NSLog(@"selected: %ld, row:%ld", indexPath.section, indexPath.row);

}

//取消选中时执行,这个方法常在表格允许多选时调用执行

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{

NSLog(@"Deselected: %ld, row:%ld", indexPath.section, indexPath.row);

}

以上代码是hi小编给大家介绍的iOS开发之UITableViewUISearchController实现搜索上拉加载下拉刷新实例代码,希望对大家有所帮助!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 iOS开发之UITableView与UISearchController实现搜索及上拉加载,下拉刷新实例代码 https://www.kuaiidc.com/93116.html

相关文章

发表评论
暂无评论