iOS开发项目篇—54"设置"界面的搭建
iOS开发项目篇—54"设置"界面的搭建
一、实现
新建一个设置控制器,当点击“我”控制器导航栏“设置”按钮时,即跳转到该界面
1.在“我”控制器中对导航栏“设置按钮”的处理
1 // 2 // YYProfileViewController.m 3 // 4 5 #import "YYProfileViewController.h" 6 #import "YYCommonGroup.h" 7 #import "YYCommonItem.h" 8 #import "YYCommonCell.h" 9 #import "YYCommonArrowItem.h" 10 #import "YYCommonSwitchItem.h" 11 #import "YYCommonLabelItem.h" 12 #import "YYSettingViewController.h" 13 14 @interface YYProfileViewController () 15 16 @end 17 18 @implementation YYProfileViewController 19 20 - (void)viewDidLoad 21 { 22 [super viewDidLoad]; 23 24 // 初始化模型数据 25 [self setupGroups]; 26 27 self.navigationItem.rightBarButtonItem=[[UIBarButtonItem alloc]initWithTitle:@"设置" style:UIBarButtonItemStyleDone target:self action:@selector(setting)]; 28 } 29 -(void)setting 30 { 31 YYSettingViewController *Vc=[[YYSettingViewController alloc]init]; 32 [self.navigationController pushViewController:Vc animated:YES]; 33 }
2."设置"控制器的处理
通过观察可以发现,设置控制器的界面设置和“我”界面差不多,因此可以考虑,让该控制器也继承自YYCommonViewController,然后做适当的调整即可。
完整的代码设计如下:
YYSettingViewController.m文件
1 // 2 // YYSettingViewController.m 3 // 4 5 #import "YYSettingViewController.h" 6 #import "YYCommonGroup.h" 7 #import "YYCommonItem.h" 8 #import "YYCommonArrowItem.h" 9 #import "YYCommonSwitchItem.h" 10 #import "YYCommonLabelItem.h" 11 12 @interface YYSettingViewController () 13 14 @end 15 16 @implementation YYSettingViewController 17 18 19 - (void)viewDidLoad 20 { 21 [super viewDidLoad]; 22 self.title=@"设置"; 23 [self setupGroups]; 24 } 25 26 -(void)setupGroups 27 { 28 //第0组 29 [self setupGroup0]; 30 //第1组 31 [self setupGroup1]; 32 [self setupGroup2]; 33 [self setupGroup3]; 34 [self setupFooter]; 35 } 36 37 -(void)setupGroup0 38 { 39 //1.创建组 40 YYCommonGroup *group=[YYCommonGroup group]; 41 [self.groups addObject:group]; 42 43 //3.设置组中所有行的数据 44 YYCommonArrowItem *mag=[YYCommonArrowItem itemWithTitle:@"账号管理"]; 45 group.items=@[mag]; 46 47 } 48 49 -(void)setupGroup1 50 { 51 //1.创建组 52 YYCommonGroup *group=[YYCommonGroup group]; 53 [self.groups addObject:group]; 54 55 //3.设置组中所有行的数据 56 YYCommonArrowItem *main=[YYCommonArrowItem itemWithTitle:@"主题、背景"]; 57 group.items=@[main]; 58 } 59 60 -(void)setupGroup2 61 { 62 //1.创建组 63 YYCommonGroup *group=[YYCommonGroup group]; 64 [self.groups addObject:group]; 65 66 //3.设置组中所有行的数据 67 YYCommonArrowItem *Notice=[YYCommonArrowItem itemWithTitle:@"通知和提醒"]; 68 YYCommonArrowItem *CommonSettings=[YYCommonArrowItem itemWithTitle:@"通用设置"]; 69 YYCommonArrowItem *PrivacyAndSecurity=[YYCommonArrowItem itemWithTitle:@"隐私和安全"]; 70 group.items=@[Notice,CommonSettings,PrivacyAndSecurity]; 71 } 72 73 -(void)setupGroup3 74 { 75 //1.创建组 76 YYCommonGroup *group=[YYCommonGroup group]; 77 [self.groups addObject:group]; 78 79 //3.设置组中所有行的数据 80 YYCommonArrowItem *feedback=[YYCommonArrowItem itemWithTitle:@"意见反馈"]; 81 YYCommonArrowItem *about=[YYCommonArrowItem itemWithTitle:@"关于"]; 82 group.items=@[feedback,about]; 83 } 84 85 -(void)setupFooter 86 { 87 88 UIButton *logout=[[UIButton alloc]init]; 89 [logout setTitle:@"退出当前账号" forState:UIControlStateNormal]; 90 [logout setTitleColor:YYColor(255, 20, 20) forState:UIControlStateNormal]; 91 [logout setBackgroundImage:[UIImage resizedImage:@"common_card_background"] forState:UIControlStateNormal]; 92 [logout setBackgroundImage:[UIImage resizedImage:@"common_card_background_highlighted"] forState:UIControlStateHighlighted]; 93 94 //设置尺寸 95 logout.height=35; 96 97 self.tableView.tableFooterView=logout; 98 99 } 100 @end
显示效果:
注意:退出当前账号这个cell和一般普通的cell不太一样,需要注意区别。
第一种做法,可以新建一个子类,继承自YYCommonItem,在自定义cell中对类型进行判断,如果是这个子类的类型,那么就设置labelText的x的中点为整个cell的中点。但是这种做法存在很大的问题,那就是涉及到cell的循环利用的问题,很麻烦。不推荐此种做法。
第二种做法,也是最简单的做法,可以创建一个按钮,然后把这个按钮设置为整个tableview的footerView.
说明:headerView和footerView是不需要设置宽度的,默认即为整个cell的宽度。
3.设置cell的头部和尾部标题
可以在通用类YYCommonViewController控制器中,对头部和尾部进行设置
1 -(NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section 2 { 3 YYCommonGroup *group=self.groups[section]; 4 return group.grougfooter; 5 6 } 7 8 -(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 9 { 10 YYCommonGroup *group=self.groups[section]; 11 return group.groupheader; 12 }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。