你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> 應用UItableview在iOS運用開辟中完成石友列表功效

應用UItableview在iOS運用開辟中完成石友列表功效

編輯:IOS開發綜合

根本完成
1、項目構造和plist文件

https://www.ios5.online/ios/UploadFiles_8070/201703/2017031615454589.png (989×495)

2、完成代碼

1.解釋:

主掌握器直接繼續UITableViewController

//  YYViewController.h
//  02-QQ石友列表(根本數據的加載)
//
//  Created by apple on 14-5-31.
//  Copyright (c) 2014年 itcase. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface YYViewController : UITableViewController

@end

在storyboard中停止了聯系關系

https://www.ios5.online/ios/UploadFiles_8070/201703/2017031615454526.png (1125×201)

2.代碼

數據模子部門:

YYQQGroupModel.h文件

//
//  YYQQGroupModel.h
//  02-QQ石友列表(根本數據的加載)
//
//  Created by apple on 14-5-31.
//  Copyright (c) 2014年 itcase. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface YYQQGroupModel : NSObject
/**
 *  稱號屬性
 */
@property(nonatomic,copy)NSString *name;
/**
 *  能否在線
 */
@property(nonatomic,copy)NSString *online;
/**
 *  石友列表
 */
@property(nonatomic,strong)NSArray *friends;

-(instancetype)initWithDict:(NSDictionary *)dict;
+(instancetype) qqGroupModelWithDict:(NSDictionary *)dict;
@end

YYQQGroupModel.m文件

//
//  YYQQGroupModel.m
//  02-QQ石友列表(根本數據的加載)
//
//  Created by apple on 14-5-31.
//  Copyright (c) 2014年 itcase. All rights reserved.
//

#import "YYQQGroupModel.h"
#import "YYFriendsModel.h"

@implementation YYQQGroupModel
-(instancetype)initWithDict:(NSDictionary *)dict
{
    if (self=[super init]) {
        //將字典轉換為模子
        [self setValuesForKeysWithDictionary:dict];
       
        //界說一個數組來保留轉換後的模子
        NSMutableArray *models=[NSMutableArray arrayWithCapacity:self.friends.count];
        for (NSDictionary *dict in self.friends) {
            YYFriendsModel *friends=[YYFriendsModel friendsWithDict:dict];
            [models addObject:friends];
        }
        _friends=[models copy];
    }
    return self;
}

+(instancetype)qqGroupModelWithDict:(NSDictionary *)dict
{
    return  [[self alloc]initWithDict:dict];
}
@end

YYFriendsModel.h文件

//
//  YYFriendsModel.h
//  02-QQ石友列表(根本數據的加載)
//
//  Created by apple on 14-5-31.
//  Copyright (c) 2014年 itcase. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface YYFriendsModel : NSObject
/**
 *  每一個石友的稱號
 */
@property(nonatomic,copy)NSString *name;
/**
 *每一個石友的頭像
 */
@property(nonatomic,copy)NSString *icon;
/**
 *  每一個石友的特性簽名
 */
@property(nonatomic,copy)NSString *intro;
/**
 *  該石友能否是vip
 */
@property(nonatomic,assign,getter = isVip)BOOL vip;

-(instancetype)initWithDict:(NSDictionary *)dict;
+(instancetype)friendsWithDict:(NSDictionary *)dict;
@end

YYFriendsModel.m文件

//
//  YYFriendsModel.m
//  02-QQ石友列表(根本數據的加載)
//
//  Created by apple on 14-5-31.
//  Copyright (c) 2014年 itcase. All rights reserved.
//

#import "YYFriendsModel.h"

@implementation YYFriendsModel
-(instancetype)initWithDict:(NSDictionary *)dict
{
    if (self=[super init]) {
        [self setValuesForKeysWithDictionary:dict];
    }
    return self;
}

+(instancetype)friendsWithDict:(NSDictionary *)dict
{
    return [[self alloc]initWithDict:dict];
}
@end

視圖部門

YYfriendCell.h文件

//
//  YYfriendCell.h
//  02-QQ石友列表(根本數據的加載)
//
//  Created by apple on 14-5-31.
//  Copyright (c) 2014年 itcase. All rights reserved.
//

#import <UIKit/UIKit.h>
@class YYFriendsModel;
@interface YYfriendCell : UITableViewCell

@property(nonatomic,strong)YYFriendsModel *friends;

+(instancetype)cellWithtableview:(UITableView *)tableView;
@end

YYfriendCell.m文件

//
//  YYfriendCell.m
//  02-QQ石友列表(根本數據的加載)
//
//  Created by apple on 14-5-31.
//  Copyright (c) 2014年 itcase. All rights reserved.
//

#import "YYfriendCell.h"
#import "YYFriendsModel.h"
//公有擴大
@interface YYfriendCell()


@end


@implementation YYfriendCell

+(YYfriendCell *)cellWithtableview:(UITableView *)tableView
{
    static NSString *identifier=@"qq";
    YYfriendCell *cell=[tableView dequeueReusableCellWithIdentifier:identifier];
    if (cell==nil) {
        //這裡應用體系自帶的款式
        cell=[[YYfriendCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];
        NSLog(@"創立一個cell");
    }
    return cell;
}

-(void)setFriends:(YYFriendsModel *)friends
{
    _friends=friends;
    //1.設置頭像
    self.imageView.image=[UIImage imageNamed:_friends.icon];
       //2.設置昵稱
    self.textLabel.text=_friends.name;
     //3.設置簡介
    self.detailTextLabel.text=_friends.intro;
 //斷定能否是會員
    /**
     *  這裡有個留意點,假如不寫else設置為黑色,會怎樣樣?
     */
    if (_friends.isVip) {
        [self.textLabel setTextColor:[UIColor redColor]];
    }else
    {
    [self.textLabel setTextColor:[UIColor blackColor]];
    }
}
@end

主掌握器部門

YYViewController.m文件

//
//  YYViewController.m
//  02-QQ石友列表(根本數據的加載)
//
//  Created by apple on 14-5-31.
//  Copyright (c) 2014年 itcase. All rights reserved.
//

#import "YYViewController.h"
#import "YYQQGroupModel.h"
#import "YYfriendCell.h"
#import "YYFriendsModel.h"

@interface YYViewController ()
/**
 *  用來保留一切的分組數據
 */
@property(nonatomic,strong)NSArray *groupFriends;
@end


@implementation YYViewController
#pragma mark-懶加載
//1.先拿到數據,完成懶加載
-(NSArray *)groupFriends
{
    if (_groupFriends==nil) {
        NSString *fullpath=[[NSBundle mainBundle]pathForResource:@"friends.plist" ofType:nil];
        NSArray *arrayM=[NSArray arrayWithContentsOfFile:fullpath];
       
        NSMutableArray *models=[NSMutableArray arrayWithCapacity:arrayM.count];
        for (NSDictionary *dict in arrayM) {
            YYQQGroupModel *group=[YYQQGroupModel qqGroupModelWithDict:dict];
            [models addObject:group];
        }
        _groupFriends=[models copy];
    }
    return _groupFriends;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
     self.tableView.sectionHeaderHeight = 100;
}

#pragma mark-  設置數據源
//前往若干組
//為何這裡不會智能提醒?由於這些辦法是uitableview協定裡的,默許並沒有遵照協定,讓主掌握器類繼續uitableviewcontroller後,就曾經遵照了
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return self.groupFriends.count;
}
//每組前往若干行
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    //掏出對應的組模子
    YYQQGroupModel *group=self.groupFriends[section];
    //前往對應組中的石友數
    return group.friends.count;
}
//每組每行的內容
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //1.創立cell
    YYfriendCell *cell=[YYfriendCell cellWithtableview:tableView];

    //2.設置cell
    YYQQGroupModel *group=self.groupFriends[indexPath.section];
    YYFriendsModel *friends=group.friends[indexPath.row];
    cell.friends=friends;
    //3.前往一個cell
    return cell;
}


#pragma mark - 署理辦法
// 當一個分組題目進入視野的時刻就會挪用該辦法
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    //    1.創立頭部視圖
    UIView *view = [[UIView alloc] init];
    view.backgroundColor = [UIColor grayColor];
    //    2.前往頭部視圖
    return view;
}

//設置分組頭部題目的高度
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 44;
}

#pragma mark  隱蔽狀況欄
-(BOOL)prefeXmlRss/ target=_blank class=infotextkey>XmlRss/ target=_blank class=infotextkey>RsstatusBarHidden
{
    return YES;
}
@end

完成的粗陋後果:

https://www.ios5.online/ios/UploadFiles_8070/201703/2017031615454518.png (316×503)

3、留意點

(1)設置頭部視圖的辦法

https://www.ios5.online/ios/UploadFiles_8070/201703/2017031615454594.png (790×404)

(2)在重寫set辦法時,應當斟酌到回滾。

https://www.ios5.online/ios/UploadFiles_8070/201703/2017031615454586.png (570×231)

更加龐雜的完成
1、完成後果

https://www.ios5.online/ios/UploadFiles_8070/201703/2017031615454597.png (317×497)https://www.ios5.online/ios/UploadFiles_8070/201703/2017031615454544.png (318×501)

2、完成代碼

1.數據模子部門

 YYQQGroupModel.h文件

//
//  YYQQGroupModel.h
//  02-QQ石友列表(根本數據的加載)
//
//  Created by apple on 14-5-31.
//  Copyright (c) 2014年 itcase. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface YYQQGroupModel : NSObject
/**
 *  稱號屬性
 */
@property(nonatomic,copy)NSString *name;
/**
 *  能否在線
 */
@property(nonatomic,copy)NSString *online;
/**
 *  石友列表
 */
@property(nonatomic,strong)NSArray *friends;

//記載以後組能否要翻開
@property(nonatomic,assign,getter = isOpen)BOOL open;

-(instancetype)initWithDict:(NSDictionary *)dict;
+(instancetype) qqGroupModelWithDict:(NSDictionary *)dict;
@end

 YYQQGroupModel.m文件

//
//  YYQQGroupModel.m
//  02-QQ石友列表(根本數據的加載)
//
//  Created by apple on 14-5-31.
//  Copyright (c) 2014年 itcase. All rights reserved.
//

#import "YYQQGroupModel.h"
#import "YYFriendsModel.h"

@implementation YYQQGroupModel
-(instancetype)initWithDict:(NSDictionary *)dict
{
    if (self=[super init]) {
        //將字典轉換為模子
        [self setValuesForKeysWithDictionary:dict];
       
        //界說一個數組來保留轉換後的模子
        NSMutableArray *models=[NSMutableArray arrayWithCapacity:self.friends.count];
        for (NSDictionary *dict in self.friends) {
            YYFriendsModel *friends=[YYFriendsModel friendsWithDict:dict];
            [models addObject:friends];
        }
        _friends=[models copy];
    }
    return self;
}

+(instancetype)qqGroupModelWithDict:(NSDictionary *)dict
{
    return  [[self alloc]initWithDict:dict];
}
@end

YYFriendsModel.h文件

//
//  YYFriendsModel.h
//  02-QQ石友列表(根本數據的加載)
//
//  Created by apple on 14-5-31.
//  Copyright (c) 2014年 itcase. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface YYFriendsModel : NSObject
/**
 *  每一個石友的稱號
 */
@property(nonatomic,copy)NSString *name;
/**
 *每一個石友的頭像
 */
@property(nonatomic,copy)NSString *icon;
/**
 *  每一個石友的特性簽名
 */
@property(nonatomic,copy)NSString *intro;
/**
 *  該石友能否是vip
 */
@property(nonatomic,assign,getter = isVip)BOOL vip;

-(instancetype)initWithDict:(NSDictionary *)dict;
+(instancetype)friendsWithDict:(NSDictionary *)dict;
@end

YYFriendsModel.m文件

//
//  YYFriendsModel.m
//  02-QQ石友列表(根本數據的加載)
//
//  Created by apple on 14-5-31.
//  Copyright (c) 2014年 itcase. All rights reserved.
//

#import "YYFriendsModel.h"

@implementation YYFriendsModel
-(instancetype)initWithDict:(NSDictionary *)dict
{
    if (self=[super init]) {
        [self setValuesForKeysWithDictionary:dict];
    }
    return self;
}

+(instancetype)friendsWithDict:(NSDictionary *)dict
{
    return [[self alloc]initWithDict:dict];
}
@end

2.視圖部門

YYfriendCell.h文件

//
//  YYfriendCell.h
//  02-QQ石友列表(根本數據的加載)
//
//  Created by apple on 14-5-31.
//  Copyright (c) 2014年 itcase. All rights reserved.
//

#import <UIKit/UIKit.h>
@class YYFriendsModel;
@interface YYfriendCell : UITableViewCell

@property(nonatomic,strong)YYFriendsModel *friends;

+(instancetype)cellWithTableview:(UITableView *)tableView;
@end

YYfriendCell.m文件

//
//  YYfriendCell.m
//  02-QQ石友列表(根本數據的加載)
//
//  Created by apple on 14-5-31.
//  Copyright (c) 2014年 itcase. All rights reserved.
//

#import "YYfriendCell.h"
#import "YYFriendsModel.h"
//公有擴大
@interface YYfriendCell()


@end


@implementation YYfriendCell

+(YYfriendCell *)cellWithTableview:(UITableView *)tableView
{
    static NSString *identifier=@"qq";
    YYfriendCell *cell=[tableView dequeueReusableCellWithIdentifier:identifier];
    if (cell==nil) {
        //這裡應用體系自帶的款式
        cell=[[YYfriendCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];
        NSLog(@"創立一個cell");
    }
    return cell;
}

-(void)setFriends:(YYFriendsModel *)friends
{
    _friends=friends;
    //1.設置頭像
    self.imageView.image=[UIImage imageNamed:_friends.icon];
       //2.設置昵稱
    self.textLabel.text=_friends.name;
   
     //3.設置簡介
    self.detailTextLabel.text=_friends.intro;
 //斷定能否是會員
   
    /**
     *  這裡有個留意點,假如不寫else設置為黑色,會怎樣樣?
     */
    if (_friends.isVip) {
        [self.textLabel setTextColor:[UIColor redColor]];
    }else
    {
    [self.textLabel setTextColor:[UIColor blackColor]];
    }
     //調劑字體的年夜小
    self.textLabel.font=[UIFont systemFontOfSize:15.f];
    self.detailTextLabel.font=[UIFont systemFontOfSize:10.f];
}
@end

YYHeaderView.h文件

//
//  YYHeaderView.h
//  02-QQ石友列表(根本數據的加載)
//
//  Created by apple on 14-6-1.
//  Copyright (c) 2014年 itcase. All rights reserved.
//

#import <UIKit/UIKit.h>

@class YYQQGroupModel,YYHeaderView;

//磋商一個協定
@protocol YYHeaderViewDelegate <NSObject>
-(void)headerViewDidClickHeaderView:(YYHeaderView *)headerView;
@end


@interface YYHeaderView : UITableViewHeaderFooterView

@property(nonatomic,strong)YYQQGroupModel *group;
//供給一個類辦法,創立一個頭部視圖
+(instancetype)headerWithTableView:(UITableView *)tableView;


//delegate遵照YYHeaderViewDelegate這個協定,可使用協定中的辦法
@property(nonatomic,weak)id<YYHeaderViewDelegate> delegate;
@end

YYHeaderView.m文件

//
//  YYHeaderView.m
//  02-QQ石友列表(根本數據的加載)
//
//  Created by apple on 14-6-1.
//  Copyright (c) 2014年 itcase. All rights reserved.
//

#import "YYHeaderView.h"
#import "YYQQGroupModel.h"

@interface YYHeaderView()
@property(nonatomic,strong)UIButton *btn;
@property(nonatomic,strong)UILabel *lab;
@end


@implementation YYHeaderView


//創立一個自界說的頭部門組視圖
+(instancetype)headerWithTableView:(UITableView *)tableView
{
    static NSString *indentifier=@"header";
    //先到緩存池中去取數據
    YYHeaderView *headerview=[tableView dequeueReusableCellWithIdentifier:indentifier];
    //假如沒有,則本身創立
    if (headerview==nil) {
        headerview=[[YYHeaderView alloc]initWithReuseIdentifier:indentifier];
    }
    //前往一個頭部視圖
    return headerview;
}

#warning 留意在結構辦法中為控件設置的frame是有效的
-(id)initWithReuseIdentifier:(NSString *)reuseIdentifier
{
    //初始化父類中的結構辦法
    if (self=[super initWithReuseIdentifier:reuseIdentifier]) {
        //創立一個按鈕
        UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];
        //設置按鈕的屬性
        //設置通俗狀況下按鈕的配景圖片
        [btn setBackgroundImage:[UIImage imageNamed:@"buddy_header_bg"] forState:UIControlStateNormal];
        //設置高亮狀況下按鈕的配景圖片
        [btn setBackgroundImage:[UIImage imageNamed:@"buddy_header_bg_highlighted"] forState:UIControlStateHighlighted];
       
        //設置按鈕上的小三角圖片
        [btn setImage:[UIImage imageNamed:@"buddy_header_arrow"] forState:UIControlStateNormal];
        //設置按鈕上信息的對其方法為左對齊
        btn.contentHorizontalAlignment=UIControlContentHorizontalAlignmentLeft;
        //設置小三角圖片的內邊距
        btn.contentEdgeInsets=UIEdgeInsetsMake(0, 20, 0, 0);
        //設置按鈕上文字間隔小三角圖片的間隔
        btn.titleEdgeInsets=UIEdgeInsetsMake(0, 20, 0, 0);
        //設置按鈕上分組題目的文本色彩(默許是白色)
        //[btn setTintColor:[UIColor blackColor]];
        [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        //添加按鈕的點擊事宜
        [btn addTarget:self action:@selector(btnOnclick:) forControlEvents:UIControlEventTouchUpInside];
       
        // 設置btn中的圖片不填充全部imageview
        btn.imageView.contentMode = UIViewContentModeCenter;
        // 超越規模的圖片不要剪切
               // btn.imageView.clipsToBounds = NO;
        btn.imageView.layer.masksToBounds = NO;
       
        //把按鈕添加到視圖
        [self addSubview:btn];
        self.btn=btn;
       
        //創立一個lab
        UILabel *lab=[[UILabel alloc]init];
        //設置在耳目數的對齊方法為右對齊
        lab.textAlignment=NSTextAlignmentRight;
        //設置在耳目數的文本色彩為灰色
        lab.textColor=[UIColor grayColor];
        [self addSubview:lab];
        self.lab=lab;
    }
    return self;
}


-(void)btnOnclick:(UIButton *)btn
{
    NSLog(@"按鈕被點擊了");
    //修正模子的isopen屬性
    //1.修正模子數據
    self.group.open=!self.group.isOpen;
    //2.刷新表格
    //(刷新表格的功效由掌握器完成,在這裡可以設置一個署理),當按鈕被點擊的時刻,就告訴署理對表格停止刷新
    //告訴署理
    if ([self.delegate respondsToSelector:@selector(headerViewDidClickHeaderView:)]) {
        [self.delegate headerViewDidClickHeaderView:self];
    }
}

//當控件的frame值轉變時,會主動挪用該辦法,故可以在該辦法中設置控件的frame;
-(void)layoutSubviews
{
#warning 必定不要忘卻挪用父類的辦法
    [super layoutSubviews];
    //設置按鈕的frame和頭部視圖一樣年夜小
    self.btn.frame=self.bounds;
   
    //設置lab的frame
    CGFloat padding=20;
    CGFloat labW=50;
    CGFloat labH=self.frame.size.height;
    CGFloat labY=0;
    CGFloat labX=self.frame.size.width-padding-labW;
    self.lab.frame=CGRectMake(labX, labY, labW, labH);
}

#pragma mark - 當一個控件被添加到其它視圖上的時刻會挪用以下辦法
// 曾經被添加到父視圖上的時刻會挪用
- (void)didMoveToSuperview
{
    NSLog(@"曾經添加到視圖了");
    // 在這個辦法中就將近拿到最新的被添加到tableview上的頭部視圖修正它的圖片
    if (self.group.isOpen) {
        //讓小三角圖片向下扭轉
        self.btn.imageView.transform = CGAff.netransformMakeRotation(M_PI_2);
    }
}

// 行將被添加到父視圖上的時刻會挪用
- (void)willMoveToSuperview:(UIView *)newSuperview
{
     NSLog(@"將要添加到視圖了");
}


//重寫get辦法,設置數據
-(void)setGroup:(YYQQGroupModel *)group
{
    _group=group;
    //設置分組題目

    //self.btn.titleLabel.text=_group.name;
    #warning 請留意在設置按鈕的文本時,必定要設置按鈕的狀況,像下面如許設置不會顯示
    [self.btn setTitle:_group.name forState:UIControlStateNormal];
    NSLog(@"%@",self.btn.titleLabel.text);
    //設置在耳目數
    self.lab.text=[NSString stringWithFormat:@"%@/%d",_group.online,_group.friends.count];
}

@end

3.掌握器部門

YYViewController.h文件

//
//  YYViewController.h
//  02-QQ石友列表(根本數據的加載)
//
//  Created by apple on 14-5-31.
//  Copyright (c) 2014年 itcase. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface YYViewController : UITableViewController

@end

YYViewController.m文件

//
//  YYViewController.m
//  02-QQ石友列表(根本數據的加載)
//
//  Created by apple on 14-5-31.
//  Copyright (c) 2014年 itcase. All rights reserved.
//

#import "YYViewController.h"
#import "YYQQGroupModel.h"
#import "YYfriendCell.h"
#import "YYFriendsModel.h"
#import "YYHeaderView.h"

@interface YYViewController ()<YYHeaderViewDelegate>
/**
 *  用來保留一切的分組數據
 */
@property(nonatomic,strong)NSArray *groupFriends;
@end


@implementation YYViewController
#pragma mark-懶加載
//1.先拿到數據,完成懶加載
-(NSArray *)groupFriends
{
    if (_groupFriends==nil) {
        NSString *fullpath=[[NSBundle mainBundle]pathForResource:@"friends.plist" ofType:nil];
        NSArray *arrayM=[NSArray arrayWithContentsOfFile:fullpath];
       
        NSMutableArray *models=[NSMutableArray arrayWithCapacity:arrayM.count];
        for (NSDictionary *dict in arrayM) {
            YYQQGroupModel *group=[YYQQGroupModel qqGroupModelWithDict:dict];
            [models addObject:group];
        }
        _groupFriends=[models copy];
    }
    return _groupFriends;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
     self.tableView.sectionHeaderHeight = 100;
       
}

#pragma mark-  設置數據源
//前往若干組
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return self.groupFriends.count;
}
//每組前往若干行
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
//    //掏出對應的組模子
        YYQQGroupModel *group=self.groupFriends[section];
//    //前往對應組中的石友數
//    return group.friends.count;
   
    //在這裡停止斷定,假如該組收攏,那就前往0行,假如該組翻開,就前往現實的行數
//    if (group.isOpen) {
//        return group.friends.count;
//    }else
//    {
//        return 0;
//    }
   
    if (group.isOpen) {
        // 代表要睜開
        return group.friends.count;
    }else
    {
        // 代表要合攏
        return 0;
    }
}
//每組每行的內容
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //1.創立cell
    YYfriendCell *cell=[YYfriendCell cellWithTableview:tableView];

    //2.設置cell
    YYQQGroupModel *group=self.groupFriends[indexPath.section];
    YYFriendsModel *friends=group.friends[indexPath.row];
    cell.friends=friends;
    //3.前往一個cell
    return cell;
}


#pragma mark - 署理辦法
// 當一個分組題目進入視野的時刻就會挪用該辦法
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
//    //    1.創立頭部視圖
//    UIView *view = [[UIView alloc] init];
//    view.backgroundColor = [UIColor grayColor];
//    //    2.前往頭部視圖
//    return view;
   
    //創立自界說的頭部視圖
    YYHeaderView *headerview=[YYHeaderView headerWithTableView:tableView];
   
    //設置以後掌握器為署理
    headerview.delegate=self;
    //設置頭部視圖的數據
    YYQQGroupModel *groupmodel=self.groupFriends[section];
    headerview.group=groupmodel;
    //前往頭部視圖
    return headerview;
}


#pragma mark - YYHeaderViewDelegate
-(void)headerViewDidClickHeaderView:(YYHeaderView *)headerView
{
    //從新挪用數據源的辦法刷新數據
    [self.tableView reloadData];
}
//設置分組頭部題目的高度
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 30;
}

#pragma mark  隱蔽狀況欄
-(BOOL)prefeXmlRss/ target=_blank class=infotextkey>XmlRss/ target=_blank class=infotextkey>RsstatusBarHidden
{
    return YES;
}
@end

3、代碼解釋

1.項目文件構造

https://www.ios5.online/ios/UploadFiles_8070/201703/2017031615454532.png (923×544)

2.留意點

(1)調劑字體的年夜小:    self.textLabel.font=[UIFont systemFontOfSize:15.f];

(2)-(void)layoutSubviews辦法。該辦法在控件的frame被轉變的時刻就會挪用,這個辦法普通用於調劑子控件的地位,留意必定要挪用[super layoutSubviews];

(3)凡是在init辦法中獲得到的frame都是0;

(4)假如控件不顯示,有以下一些排錯辦法

a.frame為空(沒有設置frame)
b.hidden能否為YES
c.alpha<=0.1(通明度)
d.沒有添加到父控件中
e.檢查父控件以上幾點
(5)請留意在設置按鈕的文本時,必定要設置按鈕的狀況

准確:[self.btn setTitle:_group.name forState:UIControlStateNormal];
毛病: self.btn.titleLabel.text=_group.name;
(6)挪用結構辦法時,必定要先初始化父類的辦法,先斷定,再停止本身屬性的初始化

self=[super initWithReuseIdentifier:reuseIdentifier]
if(self)
{
……
}
(7)當一個控件被添加到其它視圖上的時刻會挪用以下辦法
1) 曾經被添加到父視圖上的時刻會挪用- (void)didMoveToSuperview

2) 行將被添加到父視圖上的時刻會挪用- (void)willMoveToSuperview:(UIView *)newSuperview

(8)圖片填充常識

   1)設置btn中的圖片不填充全部imageview btn.imageView.contentMode = UIViewContentModeCenter;

   2)超越規模的圖片不要剪切

  //btn.imageView.clipsToBounds = NO;

  btn.imageView.layer.masksToBounds = NO;

4、彌補(署理)

設置署理的幾個步調
(1)假如一個視圖中的某個按鈕被點擊了,這個時刻須要去主掌握器中刷新數據。有一種做法是,讓這個視圖具有掌握器這個屬性,然後當按鈕被點擊的時刻去應用該屬性去做刷新數據的操作。另外一種做法是把掌握器設置為這個視圖的署理,當視圖中的某個按鈕被點擊的時刻,告訴它的署理(主掌握器)去干刷新數據這件事。
(2)要成為署理是由前提的,有以下幾個步調
1).兩邊商定一個協定(署理協定,留意定名標准),在視圖中自界說一個協定,協定中供給一個辦法。

@protocol YYHeaderViewDelegate <NSObject>

-(void)headerViewDidClickHeaderView:(YYHeaderView *)headerView;

@end

2).在視圖中添加一個id類型的屬性變量,任何人只需遵照了商定協定的都可以成為它的署理。
//delegate遵照YYHeaderViewDelegate這個協定,可使用協定中的辦法

@property(nonatomic,weak)id<YYHeaderViewDelegate> delegate;

3).在掌握器中,遵照自界說的署理協定,便可以應用署理供給的辦法,在這個辦法中對數據停止刷新。

@interface YYViewController ()<YYHeaderViewDelegate>

-(void)headerViewDidClickHeaderView:(YYHeaderView *)headerView

{

    [self.tableView reloadData];

}

4).把掌握器設置作為按鈕點擊事宜的署理。
headerview.delegate=self;

【應用UItableview在iOS運用開辟中完成石友列表功效】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved