iOS 結構簡單清晰的 設置頁面
這個是也是看了人家的代碼,覺得甚是簡單清晰,也是比較容易擴展。拿來學習一下
效果展示:

重點有以下2處:
1 .建立groupModel
列清組元素:當前組list 集合, 是否有header 或者 footer 等屬性元素
@interface HFSettingGroup : NSObject @property (nonatomic, strong) NSString *header; // 頭部標題 @property (nonatomic, strong) NSString *footer; // 尾部標題 @property (nonatomic, strong) NSArray *items; // 中間的條目 @end
2 . 建立itemModel
列清list 每行的item 都有什么元素
通常有的 就是 icon, title,content 。根據具體問題具體分析處理
添加閉包屬性 void (^operation)() 根據具體 didSelectRowAtIndexPath: 觸發獲取指定回調
如果UI個性化非常明顯,應該根據該組的枚舉類型定制個人性化
#import <Foundation/Foundation.h> typedef NS_ENUM(NSInteger, HFSettingItemStyle){ HFSettomgStyleNormal //普通類型 }; @interface HFSettingItem : NSObject @property (nonatomic, assign) HFSettingItemStyle style; //類型style @property (nonatomic, strong) NSString *icon; //左邊圖標 @property (nonatomic, strong) NSString *title; @property (nonatomic, strong) NSString *content; // 描述 //具體樣式的設置 如果格式不復雜 可區分成枚舉Type 歸類UI形式 這里UI有點復雜 不用Type @property (nonatomic, strong) NSNumber *isRedPointHidden; //代表當前是否未讀 @property (nonatomic, strong) NSNumber *isLineHidden; //是否展示底部線 @property (nonatomic, strong) NSNumber *isArrowHidden; //是否展示箭頭 /** cell上相關的觸發事件 */ @property (nonatomic, copy) void (^operation)() ; // 點擊cell后要執行的操作 /** 創建通用 settingItem @param icon 左邊圖標 @param title title @param content content @return item */ + (id)itemWithIcon:(NSString *)icon title:(NSString *)title content:(NSString *)content; @end
3 .使用舉例
- (void)addSectionItems { self.groupArrays = [NSMutableArray array]; __weak typeof(self) weakSelf = self; // 1.1.月經測試 HFSettingItem *test = [HFSettingItem itemWithIcon:nil title:@"月經測試" content:@"未測試"]; //cell點擊事件 test.operation = ^{ //TODO: test NSLog(@"test"); }; // 1.2測試結果 HFSettingItem *result = [HFSettingItem itemWithIcon:nil title:@"測試結果" content:@"平和質"]; result.operation = ^{ //TODO: test NSLog(@"result"); TestViewController *vc = [TestViewController new]; [weakSelf.navigationController pushViewController:vc animated:YES]; }; HFSettingGroup *group = [[HFSettingGroup alloc] init]; group.header = @"第一組"; group.items = @[test,result]; [self.groupArrays addObject:group]; // 2.1意見反饋 HFSettingItem *suggest = [HFSettingItem itemWithIcon:nil title:@"意見反饋" content:nil]; suggest.operation = ^{ NSLog(@"suggest"); TestViewController *vc = [TestViewController new]; [weakSelf.navigationController pushViewController:vc animated:YES]; }; HFSettingGroup *group1 = [[HFSettingGroup alloc] init]; group1.items = @[suggest]; group1.header = @"第二組"; [self.groupArrays addObject:group1]; }
posted on 2017-08-09 18:17 ACM_Someone like you 閱讀(642) 評論(0) 收藏 舉報
浙公網安備 33010602011771號