iPhone第三节:UITableView(2)
来源:互联网 发布:海南知和行书局 编辑:程序博客网 时间:2024/05/29 14:13
UITableView(2)练习(微博)、课堂(相册)
练习==微博
Model==Blog
#import <Foundation/Foundation.h>@interface Blog : NSObject#pragma mark - 属性@property (nonatomic,assign) long long Id;//微博id@property (nonatomic, strong) NSString *profileImageUrl;//头像@property (nonatomic, strong) NSString *userName;//发送用户@property (nonatomic, strong) NSString *mbtype;//会员类型@property (nonatomic, strong) NSString *createdAt;//创建时间@property (nonatomic, strong) NSString *source;//设备来源@property (nonatomic, strong) NSString *text;//微博内容#pragma mark - 方法#pragma mark 根据字典初始化微博对象-(Blog *)initWithDictionary:(NSDictionary *)dic;#pragma mark 初始化微博对象(静态方法)+(Blog *)blogWithDictionary:(NSDictionary *)dic;@end#import "Blog.h"@implementation Blog#pragma mark 根据字典初始化微博对象-(Blog *)initWithDictionary:(NSDictionary *)dic{ if(self = [super init]) { self.Id = [dic[@"Id"] longLongValue]; self.profileImageUrl = dic[@"profileImageUrl"]; self.userName = dic[@"userName"]; self.mbtype = dic[@"mbtype"]; self.createdAt = dic[@"createdAt"]; self.source = dic[@"source"]; self.text = dic[@"text"]; } return self;}#pragma mark 初始化微博对象(静态方法)+(Blog *)blogWithDictionary:(NSDictionary *)dic{ Blog *blog = [[Blog alloc]initWithDictionary:dic]; return blog;}-(NSString *)source{ return [NSString stringWithFormat:@"来自 %@",_source];}@endView==BlogTableViewCell
#import <UIKit/UIKit.h>@class Blog;@interface BlogTableViewCell : UITableViewCell#pragma mark 微博对象@property (nonatomic, strong) Blog *blog;#pragma mark 单元格高度@property (assign, nonatomic) CGFloat height;@end#import "BlogTableViewCell.h"#import "Blog.h"#import "QuartzCore/QuartzCore.h"@interface BlogTableViewCell(){ UIImageView *_avatar;//头像 UIImageView *_mbType;//会员类型 UILabel *_userName; UILabel *_createAt; UILabel *_source; UILabel *_text;}@end@implementation BlogTableViewCell- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{ self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { //头像 _avatar = [[UIImageView alloc] init]; [self.contentView addSubview:_avatar]; //用户名 _userName = [[UILabel alloc] init]; _userName.textColor = [UIColor blackColor]; _userName.font=[UIFont systemFontOfSize:14.0]; [self.contentView addSubview:_userName]; //会员类型 _mbType = [[UIImageView alloc] init]; [self.contentView addSubview:_mbType]; //圆角view _mbType.layer.cornerRadius = 5;//(像素一半,为圆形,小于一半,为原图形圆角,数值越大圆角越大) _mbType.layer.masksToBounds = YES; //边框宽度及颜色设置// [_mbType.layer setBorderWidth:2];// [_mbType.layer setBorderColor:([UIColor blueColor]).CGColor]; //设置边框为蓝色 //自动适应,保持图片宽高比 _mbType.contentMode = UIViewContentModeScaleAspectFit; //日期 _createAt = [[UILabel alloc] init]; _createAt.textColor = [UIColor lightGrayColor]; _createAt.font = [UIFont systemFontOfSize:12.0]; [self.contentView addSubview:_createAt]; //设备 _source = [[UILabel alloc] init]; _source.textColor = [UIColor lightGrayColor]; _source.font = [UIFont systemFontOfSize:12.0]; [self.contentView addSubview:_source]; //内容 _text = [[UILabel alloc] init]; _text.textColor = [UIColor blackColor]; _text.font = [UIFont systemFontOfSize:14]; _text.numberOfLines = 0; //_text.lineBreakMode = NSLineBreakByWordWrapping; [self.contentView addSubview:_text]; } return self;}- (void)setBlog:(Blog *)blog{ _avatar.frame = CGRectMake(10, 10, 40, 40); _avatar.image = [UIImage imageNamed:blog.profileImageUrl]; CGSize userNameSize = [blog.userName sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:14]}]; CGRect userNameRect=CGRectMake(60, 10, userNameSize.width,userNameSize.height); _userName.frame = userNameRect; _userName.text = blog.userName; _mbType.frame = CGRectMake((CGRectGetMaxX(_userName.frame) + 5), 12, 13, 13); _mbType.image = [UIImage imageNamed:blog.mbtype]; CGSize createAtSize=[blog.createdAt sizeWithAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12]}]; CGFloat createAtY = 50 - createAtSize.height; CGRect createAtRect = CGRectMake(60, createAtY, createAtSize.width, createAtSize.height); _createAt.frame = createAtRect; _createAt.text = blog.createdAt; CGSize sourceSize = [blog.source sizeWithAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12]}]; CGFloat sourceX = CGRectGetMaxX(_createAt.frame) + 10; CGFloat sourceY = createAtY; CGRect sourceRect = CGRectMake(sourceX, sourceY, sourceSize.width,sourceSize.height); _source.frame = sourceRect; _source.text = blog.source; CGSize textSize = [blog.text boundingRectWithSize:CGSizeMake(self.frame.size.width - 20, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName: [UIFont systemFontOfSize:14]} context:nil].size; _text.frame = CGRectMake(10, 60, textSize.width, textSize.height); _text.text = blog.text; _height = CGRectGetMaxY(_text.frame) + 10; }#pragma mark 重写选择事件,取消选中-(void)setSelected:(BOOL)selected animated:(BOOL)animated{ }- (void)awakeFromNib{ // Initialization code}//- (void)setSelected:(BOOL)selected animated:(BOOL)animated//{// [super setSelected:selected animated:animated];//// // Configure the view for the selected state//}@endController==BlogViewController
#import "BlogViewController.h"#import "Blog.h"#import "BlogTableViewCell.h"@interface BlogViewController () <UITableViewDataSource, UITableViewDelegate, UIAlertViewDelegate>{ UITableView * blogTableView; NSMutableArray * blogArray; NSMutableArray * cellArray;}@end@implementation BlogViewController- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self;}- (void)initTableView{ //位置,大小,风格 blogTableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain]; [self.view addSubview:blogTableView]; //代理、数据源 blogTableView.dataSource = self; blogTableView.delegate = self;}- (void)viewDidLoad{ [super viewDidLoad]; [self initTableView]; [self initData]; }- (void)initData{ NSString * path = [[NSBundle mainBundle] pathForResource:@"BlogList" ofType:@"plist"]; NSArray * array = [NSMutableArray arrayWithContentsOfFile:path]; blogArray = [[NSMutableArray alloc] init]; cellArray = [[NSMutableArray alloc] init]; [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { [blogArray addObject:[Blog blogWithDictionary:obj]]; BlogTableViewCell *cell=[[BlogTableViewCell alloc]init]; [cellArray addObject:cell]; }];}-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ return 1;}//行数-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return blogArray.count;}//返回每行的单元格-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *cellId = @"UITableViewCellIdentifierKey1"; BlogTableViewCell *blogCell = [tableView dequeueReusableCellWithIdentifier:cellId]; if(!blogCell) { blogCell = [[BlogTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId]; } //分别赋值 Blog * model = blogArray[indexPath.row]; blogCell.blog = model; return blogCell;}#pragma mark 重新设置单元格高度-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ BlogTableViewCell *cell= cellArray[indexPath.row]; cell.blog = blogArray[indexPath.row]; return cell.height;}#pragma mark 重写状态样式方法-(UIStatusBarStyle)preferredStatusBarStyle{ return UIStatusBarStyleLightContent;}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end
课堂==相册
Model==Work
#import <Foundation/Foundation.h>@interface Work : NSObject@property (nonatomic, strong) NSString * imageWork;@property (nonatomic, strong) NSString * titleText;@property (nonatomic, strong) NSString * numText;- (id)initWithImage:(NSString *)_imageWork andTitle:(NSString *)_titleText andNum:(NSString *)_numText;@end#import "Work.h"@implementation Work@synthesize imageWork, titleText, numText;- (id)initWithImage:(NSString *)_imageWork andTitle:(NSString *)_titleText andNum:(NSString *)_numText{ if (self = [super init]) { self.imageWork = _imageWork; self.titleText = _titleText; self.numText = _numText; } return self;}@endView==WorkTableViewCell
#import <UIKit/UIKit.h>@interface WorkTableViewCell : UITableViewCell@property (nonatomic, strong)UIImageView * workImageView;@property (nonatomic, strong)UILabel * titleLabel;@property (nonatomic, strong)UILabel * numLabel;@end#import "WorkTableViewCell.h"#import "GlobalDefine.h"@implementation WorkTableViewCell#define RECT(Y) CGRectMake(90, Y, SCWIDTH - 90 - 20, 40)@synthesize workImageView, titleLabel, numLabel;- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{ self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { workImageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 70, 70)]; [self.contentView addSubview:workImageView]; titleLabel = [[UILabel alloc] initWithFrame:RECT(15)]; titleLabel.font = [UIFont systemFontOfSize:14.0]; titleLabel.textColor = [UIColor blackColor]; titleLabel.backgroundColor = [UIColor clearColor]; titleLabel.textAlignment = NSTextAlignmentLeft; [self.contentView addSubview:titleLabel]; numLabel = [[UILabel alloc] initWithFrame:RECT(35)]; numLabel.font = [UIFont systemFontOfSize:14.0]; numLabel.textColor = [UIColor blackColor]; numLabel.backgroundColor = [UIColor clearColor]; numLabel.textAlignment = NSTextAlignmentLeft; [self.contentView addSubview:numLabel]; } return self;}- (void)awakeFromNib{ // Initialization code}- (void)setSelected:(BOOL)selected animated:(BOOL)animated{ [super setSelected:selected animated:animated]; // Configure the view for the selected state}@end
Controller==ViewControllerTable
#import <UIKit/UIKit.h>@interface ViewControllerTable : UIViewController@property (nonatomic, strong) UITableView * tableViewWork;@property (nonatomic, strong) NSMutableArray * modelArray;@end#import "ViewControllerTable.h"#import "WorkTableViewCell.h"#import "GlobalDefine.h"#import "Work.h"@interface ViewControllerTable () <UITableViewDataSource, UITableViewDelegate, UIAlertViewDelegate>{ BOOL add; //判断是否是 添加}@end@implementation ViewControllerTable- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self;}//初始化tableView- (void)initTableView{ //位置,大小,风格 _tableViewWork = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, SCWIDTH, SCHEIGHT) style:UITableViewStylePlain]; [self.view addSubview:_tableViewWork]; //代理、数据源 _tableViewWork.dataSource = self; _tableViewWork.delegate = self;}- (void)viewDidLoad{ [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; //初始化 [self initTableView]; //可变数组,盛放模型 _modelArray = [[NSMutableArray alloc] initWithCapacity:1]; //初始化模型,并放入数组 for (int i = 0; i < 10; i++) { Work * workModel = [[Work alloc] initWithImage:[NSString stringWithFormat:@"%d.jpg", i] andTitle:[NSString stringWithFormat:@"Title %d", i + 1] andNum:[NSString stringWithFormat:@"共有%d张图片", i + 1]]; [_modelArray addObject:workModel]; } #pragma mark ==deleteButton UIButton * deleteButton = [UIButton buttonWithType:UIButtonTypeCustom]; deleteButton.frame = CGRectMake(230, 40, 50, 20); deleteButton.showsTouchWhenHighlighted = YES; [deleteButton setTitle:@"删除" forState:UIControlStateNormal]; [deleteButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [deleteButton addTarget:self action:@selector(delete) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:deleteButton]; #pragma mark ==addButton UIButton * addButton = [UIButton buttonWithType:UIButtonTypeCustom]; addButton.frame = CGRectMake(230, 20, 50, 20); addButton.showsTouchWhenHighlighted = YES; [addButton setTitle:@"添加" forState:UIControlStateNormal]; [addButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [addButton addTarget:self action:@selector(add) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:addButton]; #pragma mark ==backButton UIButton * backButton = [UIButton buttonWithType:UIButtonTypeCustom]; backButton.frame = CGRectMake(230, SCHEIGHT - 50, 50, 20); backButton.showsTouchWhenHighlighted = YES; [backButton setTitle:@"返回" forState:UIControlStateNormal]; [backButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [backButton addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:backButton];}//行数- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return [_modelArray count];}//每行单元格- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ //缓存池标识 static NSString * cellId = @"reuseCellId"; //到缓存池寻找cell WorkTableViewCell * workCell = [tableView dequeueReusableCellWithIdentifier:cellId]; //如果没有则新建,并放入缓存池 if (!workCell) { workCell = [[WorkTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId]; } //当前行的对象模型 Work * model = [_modelArray objectAtIndex:indexPath.row]; //分别赋值 workCell.workImageView.image = [UIImage imageNamed:model.imageWork]; workCell.titleLabel.text = model.titleText; workCell.numLabel.text = model.numText; return workCell;}//行高- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ return 90.0;}//删除,add置NO,进入编辑状态,刷新- (void)delete{ add = NO; [self.tableViewWork setEditing:YES animated:YES]; [self.tableViewWork reloadData];}- (void)add{ add = YES; [self.tableViewWork setEditing:YES animated:YES]; [self.tableViewWork reloadData];}//返回,提示- (void)back{ UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"退出编辑模式?" message:nil delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil]; [alert show];}//点击确定退出编辑模式- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ if (buttonIndex == 1) { [self.tableViewWork setEditing:NO]; }}//根据add,判断进入删除或者插入(默认删除)- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{ //return UITableViewCellEditingStyleDelete | UITableViewCellEditingStyleInsert;//多选 if (add) { return UITableViewCellEditingStyleInsert; } return UITableViewCellEditingStyleDelete;}//根据删除、插入状态,进行相应操作,并在操作完成后退出编辑模式- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{ if (editingStyle == UITableViewCellEditingStyleDelete) { [_modelArray removeObjectAtIndex:indexPath.row]; NSIndexPath * path = [NSIndexPath indexPathForRow:indexPath.row inSection:indexPath.section]; [_tableViewWork deleteRowsAtIndexPaths:[NSArray arrayWithObject:path] withRowAnimation:UITableViewRowAnimationFade]; [self.tableViewWork setEditing:NO]; } else if (editingStyle == UITableViewCellEditingStyleInsert) { Work * workModel = [[Work alloc] initWithImage:[NSString stringWithFormat:@"1.jpg"] andTitle:[NSString stringWithFormat:@"Title %d", indexPath.row + 1] andNum:[NSString stringWithFormat:@"共有%d张图片", indexPath.row + 1]]; [_modelArray insertObject:workModel atIndex:indexPath.row]; NSIndexPath * path = [NSIndexPath indexPathForRow:indexPath.row inSection:indexPath.section]; [_tableViewWork insertRowsAtIndexPaths:[NSArray arrayWithObject:path] withRowAnimation:UITableViewRowAnimationFade]; [self.tableViewWork setEditing:NO]; }}//改变 删除的delete字样- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{ return @"删除";}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end
0 0
- iPhone第三节:UITableView(2)
- iPhone第三节:UITableView
- 第三节 FPGA数码管驱动2
- iPhone UITableView
- iPhone 开发(四)mac熟悉 第三节 终端命令的学习
- 第三节 什么是ERP
- 第三节 CFileOpt类
- 第三节第五周
- 第三节课堂感受
- 第一章 --- 第三节
- 第二章 --- 第三节
- csdn第三节课
- 第三章 ---- 第三节
- Java 第三节 总结
- 第二章 第三节
- php学习 第三节
- XSS第三节,分门别类
- java笔记第三节
- Uvalive 6428 A+B(扩展欧几里得算法)
- 9.1筆記,系統分享,Fragment not attached to Activity
- leetcode 191: Number of 1 Bits
- QT中实现类似网页搜索的自动出现下拉提示
- stream_register_wrapper 注册一个用 PHP 类实现的 URL 封装协议 允许用户实现自定义的协议处理器和流
- iPhone第三节:UITableView(2)
- 下一代hadoop(Mapreduce),YARN/MRv2
- ios 的 工程内的多Targets有什么用
- 中兴2016机试题目
- Leetcode -- Bitwise AND of Numbers Range
- HDU 2045 不容易系列之(3)—— LELE的RPG难题 递推公式
- UVA 1624 打结
- 聊天界面的制作(二)——发送消息后ListView左右布局显示
- VS2010项目加载全部解决方案都不可用重新加载和新建项目一个个加载都不行