欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

IOS展开三级列表效果示例

程序员文章站 2023-12-13 09:12:04
效果图如下: #import @interface appdelegate : uiresponder &l...

效果图如下:

IOS展开三级列表效果示例IOS展开三级列表效果示例

#import <uikit/uikit.h>

@interface appdelegate : uiresponder <uiapplicationdelegate>

@property (strong, nonatomic) uiwindow *window;


@end
#import "appdelegate.h"
#import "rootviewcontroller.h"
@interface appdelegate ()

@end

@implementation appdelegate


- (bool)application:(uiapplication *)application didfinishlaunchingwithoptions:(nsdictionary *)launchoptions {
  self.window = [[uiwindow alloc] initwithframe:[[uiscreen mainscreen] bounds]];
  // override point for customization after application launch.
  self.window.backgroundcolor = [uicolor whitecolor];
  
  rootviewcontroller *root = [[rootviewcontroller alloc] init];
  uinavigationcontroller *navi = [[uinavigationcontroller alloc] initwithrootviewcontroller:root];
  self.window.rootviewcontroller = navi;
  
  [self.window makekeyandvisible];
  return yes;
}


@end
#import <uikit/uikit.h>
 
@interface rootviewcontroller : uiviewcontroller
 
@end
#import "rootviewcontroller.h"
#import "maincell.h"
#import "detialtableviewcell.h"
@interface rootviewcontroller ()<uitableviewdatasource,uitableviewdelegate>
{
  uitableview *_tableview;
  nsmutabledictionary *dic;//存对应的数据
  nsmutablearray *selectedarr;// 二级列表是否展开状态
  nsmutablearray *titledataarray;
  nsarray *dataarray;//数据源,显示每个cell的数据
  nsmutabledictionary *statedic;//三级列表是否展开状态
  nsmutablearray *grouparr0;
  nsmutablearray *grouparr1;
  nsmutablearray *grouparr2;
  nsmutablearray *grouparr3;
  nsmutablearray *grouparr4;
  nsmutablearray *grouparr5;
  
}
@end

@implementation rootviewcontroller

- (void)viewdidload {
  [super viewdidload];
  self.title = @"列表";
  dic = [[nsmutabledictionary alloc] init];
  selectedarr = [[nsmutablearray alloc] init];
  dataarray = [[nsmutablearray alloc] init];
  
  // 初始化tableview
  _tableview = [[uitableview alloc] initwithframe:cgrectmake(0, 0, 320*scalex, [uiscreen mainscreen].bounds.size.height) style:uitableviewstyleplain];
  _tableview.delegate = self;
  _tableview.datasource = self;
  // 隐藏滚动条
  _tableview.showsverticalscrollindicator = no;
  _tableview.showshorizontalscrollindicator = no;
  _tableview.separatorstyle = uitableviewcellseparatorstylenone;
  [self.view addsubview:_tableview];
  
  // 加载数据
  [self loaddata];
}
/**
 * 加载数据
 */
- (void)loaddata
{
  titledataarray = [[nsmutablearray alloc] initwithobjects:@"亲朋",@"家人",@"好友", @"蓝颜",@"同学",@"老乡",nil];
  
  nsmutabledictionary *nameandstatedic1 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"小莉",@"name",@"no",@"state", nil];
  nsmutabledictionary *nameandstatedic2 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"婷婷",@"name",@"no",@"state", nil];
  nsmutabledictionary *nameandstatedic3 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"小庄",@"name",@"no",@"state", nil];
  
  grouparr0 = [[nsmutablearray alloc] initwithobjects:nameandstatedic1,nameandstatedic2,nameandstatedic3, nil];
  
  nsmutabledictionary *nameandstatedic4 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"晨晨姐",@"name",@"no",@"state",nil];
  nsmutabledictionary *nameandstatedic5 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"李涛",@"name",@"no",@"state",nil];
  nsmutabledictionary *nameandstatedic6 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"海波",@"name",@"no",@"state",nil];
  nsmutabledictionary *nameandstatedic7 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"张敏",@"name",@"no",@"state",nil];
  
  grouparr1 = [[nsmutablearray alloc]initwithobjects:nameandstatedic4,nameandstatedic5,nameandstatedic6,nameandstatedic7, nil];
  
  nsmutabledictionary *nameandstatedic8 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"杨浩",@"name",@"no",@"state",nil];
  nsmutabledictionary *nameandstatedic9 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"小明",@"name",@"no",@"state",nil];
  nsmutabledictionary *nameandstatedic10 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"洋洋",@"name",@"no",@"state",nil];
  nsmutabledictionary *nameandstatedic11 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"赵蒙",@"name",@"no",@"state",nil];
  nsmutabledictionary *nameandstatedic12 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"小催",@"name",@"no",@"state",nil];
  nsmutabledictionary *nameandstatedic13 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"和平",@"name",@"no",@"state",nil];
  
  grouparr2 = [[nsmutablearray alloc]initwithobjects:nameandstatedic8,nameandstatedic9,nameandstatedic10,nameandstatedic11,nameandstatedic12,nameandstatedic13,nil];
  
  nsmutabledictionary *nameandstatedic14 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"超人",@"name",@"no",@"state",nil];
  nsmutabledictionary *nameandstatedic15 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"怪兽",@"name",@"no",@"state",nil];
  
  grouparr3 = [[nsmutablearray alloc] initwithobjects:nameandstatedic14,nameandstatedic15, nil];
  
  nsmutabledictionary *nameandstatedic16 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"大包",@"name",@"no",@"state",nil];
  nsmutabledictionary *nameandstatedic17 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"小林子",@"name",@"no",@"state",nil];
  nsmutabledictionary *nameandstatedic18 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"石头",@"name",@"no",@"state",nil];
  nsmutabledictionary *nameandstatedic19 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"小轩轩",@"name",@"no",@"state",nil];
  nsmutabledictionary *nameandstatedic20 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"阿东",@"name",@"no",@"state",nil];
  
  grouparr4 = [[nsmutablearray alloc]initwithobjects:nameandstatedic16,nameandstatedic17,nameandstatedic18,nameandstatedic19,nameandstatedic20, nil];
  
  nsmutabledictionary *nameandstatedic21 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"郑平",@"name",@"no",@"state",nil];
  nsmutabledictionary *nameandstatedic22 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"刘凡",@"name",@"no",@"state",nil];
  nsmutabledictionary *nameandstatedic23 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"韩琴",@"name",@"no",@"state",nil];
  nsmutabledictionary *nameandstatedic24 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"刘华健",@"name",@"no",@"state",nil];
  nsmutabledictionary *nameandstatedic25 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"彭晓明",@"name",@"no",@"state",nil];
  nsmutabledictionary *nameandstatedic26 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"张欢",@"name",@"no",@"state",nil];
  nsmutabledictionary *nameandstatedic27 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"刘来楠",@"name",@"no",@"state",nil];
  nsmutabledictionary *nameandstatedic28 = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",@"任强",@"name",@"no",@"state",nil];
  
  grouparr5 = [[nsmutablearray alloc]initwithobjects:nameandstatedic21,nameandstatedic22,nameandstatedic23,nameandstatedic24,nameandstatedic25,nameandstatedic26,nameandstatedic27,nameandstatedic28, nil];

  [dic setvalue:grouparr0 forkey:@"0"];
  [dic setvalue:grouparr1 forkey:@"1"];
  [dic setvalue:grouparr2 forkey:@"2"];
  [dic setvalue:grouparr3 forkey:@"3"];
  [dic setvalue:grouparr4 forkey:@"4"];
  [dic setvalue:grouparr5 forkey:@"5"];
  
}

#pragma mark - tableviewdelegate - 
// 返回几个表头
- (nsinteger)numberofsectionsintableview:(uitableview *)tableview
{
  return titledataarray.count;
}

// 每个表头返回几行
- (nsinteger)tableview:(uitableview *)tableview numberofrowsinsection:(nsinteger)section
{
  nsstring *string = [nsstring stringwithformat:@"%d",(int)section];
  // 如果表头返回值不为零,则修改图片(改成箭头向下的图片)
  if ([selectedarr containsobject:string]) {
    uiimageview *imageview = (uiimageview *)[_tableview viewwithtag:20000 + section];
    imageview.image = [uiimage imagenamed:@"buddy_header_arrow_down"];
    
    nsarray *array1 = dic[string];
    return array1.count;
  }
  return 0;
}

// 设置表头的高度
- (cgfloat)tableview:(uitableview *)tableview heightforheaderinsection:(nsinteger)section
{
  return 40*scalex;
}
// section footer的高度
- (cgfloat)tableview:(uitableview *)tableview heightforfooterinsection:(nsinteger)section
{
  return 0.2;
}
// 设置view,将替代titleforheaderinsection方法
- (uiview *)tableview:(uitableview *)tableview viewforheaderinsection:(nsinteger)section
{
  uiview *view = [[uiview alloc] initwithframe:cgrectmake(0, 0, 320*scalex, 30*scaley)];
  view.backgroundcolor = [uicolor whitecolor];
  
  uilabel *titlelabel = [[uilabel alloc] initwithframe:cgrectmake(20*scalex, 5*scaley, tableview.frame.size.width - 20*scalex, 30*scaley)];
  titlelabel.text = [titledataarray objectatindex:section];
  [view addsubview:titlelabel];
  
  uiimageview *imageview = [[uiimageview alloc] initwithframe:cgrectmake(5*scalex, 12*scaley, 15*scalex, 15*scaley)];
  imageview.tag = 20000+section;

  // 判断是不是选中状态
  nsstring *string = [nsstring stringwithformat:@"%d",(int)section];
  if ([selectedarr containsobject:string]) {
    imageview.image = [uiimage imagenamed:@"buddy_header_arrow_down"];
  }else{
    imageview.image = [uiimage imagenamed:@"buddy_header_arrow_right"];
  }
  [view addsubview:imageview];
  
  uibutton *button = [uibutton buttonwithtype:uibuttontypecustom];
  button.frame = cgrectmake(0, 0, 320*scalex, 40*scaley);
  button.tag = 100 + section;
  [button addtarget:self action:@selector(buttonaction:) forcontrolevents:uicontroleventtouchupinside];
  [view addsubview:button];
  
  uiimageview *lineimage = [[uiimageview alloc] initwithframe:cgrectmake(0, 40*scaley - 1, 320*scalex, 1)];
  lineimage.image = [uiimage imagenamed:@"line"];
  [view addsubview:lineimage];
  
  return view;
}

- (cgfloat)tableview:(uitableview *)tableview heightforrowatindexpath:(nsindexpath *)indexpath
{
  nsstring *indexstr = [nsstring stringwithformat:@"%d",(int)indexpath.section];
  if ([dic[indexstr][indexpath.row][@"cell"] isequaltostring:@"maincell"]) {
    return 60*scaley;
  }else{
    return 40*scaley;
  }
}

- (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath
{
  // 当前是第几个表头
  nsstring *indexstr = [nsstring stringwithformat:@"%d",(int)indexpath.section];
  if ([dic[indexstr][indexpath.row][@"cell"] isequaltostring:@"maincell"]) {
    static nsstring *identifier = @"maincell";
    maincell *cell = [tableview dequeuereusablecellwithidentifier:identifier];
    
    if (cell == nil) {
      cell = [[maincell alloc] initwithstyle:uitableviewcellstyledefault reuseidentifier:identifier];
      cell.selectionstyle = uitableviewcellselectionstylegray;
    }
    
    if ([selectedarr containsobject:indexstr]) {
      cell.headerphoto.image = [uiimage imagenamed:[nsstring stringwithformat:@"%d.png",arc4random()%11]];
      cell.namelabel.text = dic[indexstr][indexpath.row][@"name"];
      cell.introductionlabel.text = @"滴滴雨点仿佛似流泪,滴在我冰冷的身躯";
      cell.networklabel.text = @"2g";
    }
    // ???
    if (indexpath.row == dataarray.count - 1) {
      cell.imageline.image = nil;
    }else{
      cell.imageline.image = [uiimage imagenamed:@"line"];
    }
    return cell;
  }else if ([dic[indexstr][indexpath.row][@"cell"] isequaltostring:@"attachedcell"]){
    static nsstring *detialidentifier = @"attachedcell";
    detialtableviewcell *cell = [tableview dequeuereusablecellwithidentifier:detialidentifier];
    
    if (cell == nil) {
      cell = [[detialtableviewcell alloc] initwithstyle:uitableviewcellstyledefault reuseidentifier:detialidentifier];
      cell.selectionstyle = uitableviewcellseparatorstylenone;
      cell.imageline.image = [uiimage imagenamed:@"line"];
    }
    return cell;
  }
  return nil;
}

- (void)tableview:(uitableview *)tableview didselectrowatindexpath:(nsindexpath *)indexpath
{
  // todo:search
  [_tableview deselectrowatindexpath:indexpath animated:yes];
  nsstring *indexstr = [nsstring stringwithformat:@"%d",(int)indexpath.section];
  nsindexpath *path = nil;
  
  if ([dic[indexstr][indexpath.row][@"cell"] isequaltostring:@"maincell"]) {
    // todo:search
    path = [nsindexpath indexpathforitem:(indexpath.row + 1) insection:indexpath.section];
  }else{
    path = indexpath;
  }  
  if ([dic[indexstr][indexpath.row][@"state"] boolvalue]) {
    // 关闭附加cell
    nsmutabledictionary *dd = dic[indexstr][indexpath.row];
    nsstring *name = dd[@"name"];
    
    nsmutabledictionary *nameandstatedic = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",name,@"name",@"no",@"state", nil];
    
    switch (indexpath.section) {
      case 0:
      {
        grouparr0[(path.row-1)] = nameandstatedic;
        [grouparr0 removeobjectatindex:path.row];
      }
        break;
      case 1:
      {
        grouparr1[(path.row-1)] = nameandstatedic;
        [grouparr1 removeobjectatindex:path.row];
      }
        break;
      case 2:
      {
        grouparr2[(path.row-1)] = nameandstatedic;
        [grouparr2 removeobjectatindex:path.row];
      }
        break;
      case 3:
      {
        grouparr3[(path.row-1)] = nameandstatedic;
        [grouparr3 removeobjectatindex:path.row];
      }
        break;
      case 4:
      {
        grouparr4[(path.row-1)] = nameandstatedic;
        [grouparr4 removeobjectatindex:path.row];
      }
        break;
      case 5:
      {
        grouparr5[(path.row-1)] = nameandstatedic;
        [grouparr5 removeobjectatindex:path.row];
      }
        break;
      default:
        break;
    }
    
    [_tableview beginupdates];
    [_tableview deleterowsatindexpaths:@[path] withrowanimation:uitableviewrowanimationmiddle];
    [_tableview endupdates];
  }else{
    // 打开附加cell
    nsmutabledictionary *dd = dic[indexstr][indexpath.row];
    nsstring *name = dd[@"name"];
    
    nsmutabledictionary *nameandstatedic = [nsmutabledictionary dictionarywithobjectsandkeys:@"maincell",@"cell",name,@"name",@"yes",@"state", nil];
    switch (indexpath.section) {
      case 0:
      {
        grouparr0[(path.row-1)] = nameandstatedic;
        nsmutabledictionary *nameandstatedic1 = [nsmutabledictionary dictionarywithobjectsandkeys:@"attachedcell",@"cell",@"yes",@"state", nil];
        [grouparr0 insertobject:nameandstatedic1 atindex:path.row];
      }
        break;
      case 1:
      {
        grouparr1[(path.row-1)] = nameandstatedic;
        nsmutabledictionary *nameandstatedic1 = [nsmutabledictionary dictionarywithobjectsandkeys:@"attachedcell",@"cell",@"yes",@"state", nil];
        [grouparr1 insertobject:nameandstatedic1 atindex:path.row];
      }
        break;
      case 2:
      {
        grouparr2[(path.row-1)] = nameandstatedic;
        nsmutabledictionary *nameandstatedic1 = [nsmutabledictionary dictionarywithobjectsandkeys:@"attachedcell",@"cell",@"yes",@"state", nil];
        [grouparr2 insertobject:nameandstatedic1 atindex:path.row];
      }
        break;
      case 3:
      {
        grouparr3[(path.row-1)] = nameandstatedic;
        nsmutabledictionary *nameandstatedic1 = [nsmutabledictionary dictionarywithobjectsandkeys:@"attachedcell",@"cell",@"yes",@"state", nil];
        [grouparr3 insertobject:nameandstatedic1 atindex:path.row];
      }
        break;
      case 4:
      {
        grouparr4[(path.row-1)] = nameandstatedic;
        nsmutabledictionary *nameandstatedic1 = [nsmutabledictionary dictionarywithobjectsandkeys:@"attachedcell",@"cell",@"yes",@"state", nil];
        [grouparr4 insertobject:nameandstatedic1 atindex:path.row];
      }
        break;
      case 5:
      {
        grouparr5[(path.row-1)] = nameandstatedic;
        nsmutabledictionary *nameandstatedic1 = [nsmutabledictionary dictionarywithobjectsandkeys:@"attachedcell",@"cell",@"yes",@"state", nil];
        [grouparr5 insertobject:nameandstatedic1 atindex:path.row];
      }
        break;
      default:
        break;
    }
    [_tableview beginupdates];
    [_tableview insertrowsatindexpaths:@[path] withrowanimation:uitableviewrowanimationmiddle];
    [_tableview endupdates];
  }
}

-(void)buttonaction:(uibutton *)sender
{
  nsstring *string = [nsstring stringwithformat:@"%d",(int)(sender.tag-100)];
  
  //数组selectedarr里面存的数据和表头想对应,方便以后做比较
  if ([selectedarr containsobject:string])
  {
    [selectedarr removeobject:string];
  }
  else
  {
    [selectedarr addobject:string];
  }
  
  [_tableview reloaddata];
}

- (void)didreceivememorywarning {
  [super didreceivememorywarning];
  // dispose of any resources that can be recreated.
}



@end
#import <uikit/uikit.h>

@interface maincell : uitableviewcell

@property (strong, nonatomic) uilabel *namelabel;

@property (strong, nonatomic) uilabel *introductionlabel;

@property (strong, nonatomic) uilabel *networklabel;

@property (strong, nonatomic) uiimageview *headerphoto;

@property (strong, nonatomic) uiimageview *imageline;

@end
#import "maincell.h"

@implementation maincell

- (id)initwithstyle:(uitableviewcellstyle)style reuseidentifier:(nsstring *)reuseidentifier
{
  self = [super initwithstyle:style reuseidentifier:reuseidentifier];
  if (self) {
    // 头像
    _headerphoto = [[uiimageview alloc] initwithframe:cgrectmake(6*scalex, 5*scaley, 50*scalex, 50*scalex)];
    [self.contentview addsubview:_headerphoto];
    // 名字
    _namelabel = [[uilabel alloc] initwithframe:cgrectmake(60*scalex, 5*scaley, 200*scalex, 25*scalex)];
    _namelabel.font = [uifont systemfontofsize:15];
    [self.contentview addsubview:_namelabel];
    // 简介
    _introductionlabel = [[uilabel alloc] initwithframe:cgrectmake(60*scalex, 28*scaley, 240*scalex, 25*scalex)];
    _introductionlabel.backgroundcolor = [uicolor clearcolor];
    _introductionlabel.textcolor = [uicolor lightgraycolor];
    _introductionlabel.font = [uifont systemfontofsize:13];
    [self.contentview addsubview:_introductionlabel];
    
    // 网络
    _networklabel = [[uilabel alloc] initwithframe:cgrectmake(290*scalex, 5*scaley, 50*scalex, 25*scaley)];
    _networklabel.backgroundcolor = [uicolor clearcolor];
    _networklabel.textcolor = [uicolor lightgraycolor];
    _networklabel.font = [uifont systemfontofsize:13];
    [self.contentview addsubview:_networklabel];
    
    // 分割线
    _imageline = [[uiimageview alloc] initwithframe:cgrectmake(60*scalex, 60*scaley - 1, (320 - 60)*scalex, 1)];
    [self.contentview addsubview:_imageline];
  }
  return self;
}

@end
#import <uikit/uikit.h>

@interface detialtableviewcell : uitableviewcell

@property (strong, nonatomic) uiimageview *imageline;

@end
#import "detialtableviewcell.h"
#import "uibutton+initializer.h"
@implementation detialtableviewcell

- (id)initwithstyle:(uitableviewcellstyle)style reuseidentifier:(nsstring *)reuseidentifier
{
  self = [super initwithstyle:style reuseidentifier:reuseidentifier];
  if (self) {
    // 分割线
    _imageline = [[uiimageview alloc] initwithframe:cgrectmake(60*scalex, 40*scaley - 1, (320 - 60)*scaley, 1)];
    [self.contentview addsubview:_imageline];
    
    uibutton *btn1 = [uibutton initbuttonwithframe:cgrectmake(70*scalex, 9*scaley, 50*scalex, 20*scaley) title:@"语音" target:self selector:@selector(btnaction:)];
    btn1.tag = 100;
    
    uibutton *btn2 = [uibutton initbuttonwithframe:cgrectmake(130*scalex, 9*scaley, 50*scalex, 20*scaley) title:@"视频" target:self selector:@selector(btnaction:)];
    btn2.tag = 200;
    
    uibutton *btn3 = [uibutton initbuttonwithframe:cgrectmake(190*scalex, 9*scaley, 50*scalex, 20*scaley) title:@"图片" target:self selector:@selector(btnaction:)];
    btn3.tag = 300;
    
    uibutton *btn4 = [uibutton initbuttonwithframe:cgrectmake(250*scalex, 9*scaley, 50*scalex, 20*scaley) title:@"表情" target:self selector:@selector(btnaction:)];
    btn4.tag = 400;
    
    [self.contentview addsubview:btn1];
    [self.contentview addsubview:btn2];
    [self.contentview addsubview:btn3];
    [self.contentview addsubview:btn4];
  }
  return self;
}

- (void)btnaction:(uibutton *)sender
{
  switch (sender.tag) {
    case 100:
    {
      nslog(@"~~~~语音~~~~");
    }
      break;
    case 200:
    {
      nslog(@"~~~~视频~~~~");
    }
      break;
    case 300:
    {
      nslog(@"~~~~图片~~~~");
    }
      break;
    case 400:
    {
      nslog(@"~~~~表情~~~~");
    }
      break;
    default:
      break;
  }
}

- (void)awakefromnib {
  // initialization code
}

- (void)setselected:(bool)selected animated:(bool)animated {
  [super setselected:selected animated:animated];

  // configure the view for the selected state
}

@end
#import <uikit/uikit.h>

@interface uibutton (initializer)
/**
 * 初始化button
 *
 * @param frame    button的尺寸
 * @param target    button的目标对象
 * @param selector   点击button所触发的方法
 * @param image    button的背景图片
 * @param imagepressed button高亮时的图片
 *
 * @return button
 */
+ (uibutton *)initbuttonwithframe:(cgrect)frame target:(id)target selector:(sel)selector image:(nsstring *)image imagepressed:(nsstring *)imagepressed;
/**
 * 初始化button
 *
 * @param frame  button的尺寸
 * @param title  button的标题
 * @param target  button的目标对象
 * @param selector 点击button所触发的方法
 *
 * @return button
 */
+ (uibutton *)initbuttonwithframe:(cgrect)frame title:(nsstring *)title target:(id)target selector:(sel)selector;

@end
#import "uibutton+initializer.h"

@implementation uibutton (initializer)

+ (uibutton *)initbuttonwithframe:(cgrect)frame target:(id)target selector:(sel)selector image:(nsstring *)image imagepressed:(nsstring *)imagepressed
{
  uibutton *button = [uibutton buttonwithtype:uibuttontypecustom];
  [button setframe:frame];
  uiimage *newimage = [uiimage imagenamed:image];
  [button setbackgroundimage:newimage forstate:0];
  uiimage *newpressedimage = [uiimage imagenamed:imagepressed];
  [button setbackgroundimage:newpressedimage forstate:uicontrolstatehighlighted];
  [button addtarget:target action:selector forcontrolevents:uicontroleventtouchupinside];
  return button;
}

+ (uibutton *)initbuttonwithframe:(cgrect)frame title:(nsstring *)title target:(id)target selector:(sel)selector
{
  uibutton *button = [uibutton buttonwithtype:uibuttontyperoundedrect];
  [button setframe:frame];
  [button settitle:title forstate:0];
  [button addtarget:target action:selector forcontrolevents:uicontroleventtouchupinside];
  return button;
}

@end

pch文件的代码:

#ifndef qqlist_prefixheader_pch
#define qqlist_prefixheader_pch

#define scalex [uiscreen mainscreen].bounds.size.width/320.0
#define scaley [uiscreen mainscreen].bounds.size.height/568.0

#endif

总结

以上就是在ios展开三级列表效果示例的全部内容,希望本文的内容对大家ios时能有所帮助。

上一篇:

下一篇: