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 }

iOS开发项目篇—54"设置"界面的搭建,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。