UI09_自定义cell写通讯录
来源:互联网 发布:淦什么意思网络用语 编辑:程序博客网 时间:2024/05/16 15:10
AppDelegate.h
#import <UIKit/UIKit.h>@interface AppDelegate : UIResponder <UIApplicationDelegate>@property (strong, nonatomic) UIWindow *window;@end
AppDelegate.m
#import "AppDelegate.h"#import "RootViewController.h"@interface AppDelegate ()@end@implementation AppDelegate- (void)dealloc{ [_window release]; [super dealloc];}- (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]; [self.window makeKeyAndVisible]; [_window release]; RootViewController *rootVC = [[RootViewController alloc] init]; UINavigationController *naVC = [[UINavigationController alloc] initWithRootViewController:rootVC]; self.window.rootViewController = naVC; [naVC release]; [rootVC release]; return YES;}
RootViewController.h
#import <UIKit/UIKit.h>@interface RootViewController : UIViewController@end
RootViewController.m
#import "RootViewController.h"#import "FemaleCell.h"#import "MaleCell.h"#import "DetailViewController.h"#import "AddViewController.h"#define WIDTH self.view.frame.size.width#define HEIGHT self.view.frame.size.height@interface RootViewController ()<UITableViewDataSource, UITableViewDelegate, ModifyVlaueDelegate, AddDelegate>@property(nonatomic, retain)UITableView *tableView;@property(nonatomic, retain)NSMutableArray *stuArr;@end@implementation RootViewController- (void)dealloc{ [_stuArr release]; [_tableView release]; [super dealloc];}- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { [self createData]; } return self;}- (void)createData { NSString *path = [[NSBundle mainBundle] pathForResource:@"0825Student" ofType:@"plist"]; self.stuArr = [NSMutableArray array]; self.stuArr = [NSMutableArray arrayWithContentsOfFile:path];// NSLog(@"%@", self.stuArr);}- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"add.png"] style:UIBarButtonItemStyleDone target:self action:@selector(addAction:)]; self.view.backgroundColor = [UIColor whiteColor]; self.navigationController.navigationBar.translucent = NO; self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, WIDTH, HEIGHT) style:UITableViewStylePlain]; [self.view addSubview:self.tableView]; [self.tableView release]; self.tableView.backgroundColor = [UIColor lightGrayColor]; self.tableView.rowHeight = 77; self.tableView.separatorStyle = NO; self.tableView.dataSource = self; self.tableView.delegate = self;}- (void)addAction:(id)sender { AddViewController *addVC = [[AddViewController alloc] init]; [self.navigationController pushViewController:addVC animated:YES]; [addVC release]; addVC.delegate = self;}- (void)addNewMember:(NSMutableDictionary *)dic {// NSLog(@"%@", dic); [self.stuArr addObject:dic];// [self.tableView reloadData];}- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { DetailViewController *detailVC = [[DetailViewController alloc] init]; [self.navigationController pushViewController:detailVC animated:YES]; detailVC.tempDic = self.stuArr[indexPath.row]; detailVC.delegate = self;}- (void)modifyTakeVale:(NSMutableDictionary *)dic { [self.tableView reloadData];}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { if ([self.stuArr[indexPath.row][@"sex"] isEqualToString:@"女"]) { static NSString *reuse = @"reuse"; FemaleCell *cell = [tableView dequeueReusableCellWithIdentifier:reuse]; if (!cell) { cell = [[[FemaleCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuse] autorelease]; } cell.nameLabel.text = self.stuArr[indexPath.row][@"name"]; cell.phoneLabel.text = self.stuArr[indexPath.row][@"phone"]; cell.addressLabel.text = self.stuArr[indexPath.row][@"address"]; return cell; } else { static NSString *maleReuse = @"maleReuse"; MaleCell *cell = [tableView dequeueReusableCellWithIdentifier:maleReuse]; if (!cell) { cell = [[[MaleCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:maleReuse] autorelease]; } cell.maleNameLabel.text = self.stuArr[indexPath.row][@"name"]; cell.malePhoneLabel.text = self.stuArr[indexPath.row][@"phone"]; return cell; }}- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.stuArr.count;}
AddViewController.h
#import <UIKit/UIKit.h>@protocol AddDelegate <NSObject>- (void)addNewMember:(NSMutableDictionary *)dic;@end@interface AddViewController : UIViewController@property(nonatomic, assign)id<AddDelegate>delegate;@property(nonatomic, retain)NSMutableDictionary *dic;@end
AddViewController.m
#import "AddViewController.h"@interface AddViewController ()<UITextFieldDelegate>@property(nonatomic, retain)NSMutableArray *array;@end@implementation AddViewController- (void)dealloc{ [_dic release]; [_array release]; [super dealloc];}- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.view.backgroundColor = [UIColor whiteColor]; self.array = [NSMutableArray arrayWithObjects:@"name", @"sex", @"phone", @"address", @"age", @"hobby", nil]; for (NSInteger i = 0; i < 6; i++) { UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(30, 20 + 50 * i, 100, 30)]; [self.view addSubview:label]; [label release]; label.layer.borderWidth = 1; label.text = self.array[i]; label.textAlignment = NSTextAlignmentCenter; label.tag = i; UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(150, 20 + 50 * i, 100, 30)]; [self.view addSubview:textField]; [textField release]; textField.layer.borderWidth = 1; textField.delegate = self; textField.tag = i + 6;// if (i == 0) {// [textField becomeFirstResponder];// } } UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem]; [self.view addSubview:button]; button.frame = CGRectMake(180, 310, 50, 30); button.layer.borderWidth = 1; button.layer.cornerRadius = 10; button.layer.borderColor = [UIColor cyanColor].CGColor; [button setTitle:@"return" forState:UIControlStateNormal]; [button addTarget:self action:@selector(ReturnButton:) forControlEvents:UIControlEventTouchUpInside];}- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {}//- (void)ReturnButton:(UIButton *)button {// NSLog(@"%@", self.dic);//// [self.navigationController popToRootViewControllerAnimated:YES];// [self.delegate addNewMember:self.dic];//}- (void)textFieldDidEndEditing:(UITextField *)textField { UILabel *label = [[UILabel alloc] init]; label = (UILabel *)[self.view viewWithTag:textField.tag - 6]; [self.dic setObject:textField.text forKey:label.text];}- (BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder];// UITextField *anotherTextField = (UITextField *)[self.view viewWithTag:++textField.tag];// [anotherTextField becomeFirstResponder];// switch (textField.tag) {// case 6:// <#statements#>// break;// // default:// break;// } return YES;}
DetailViewController.h
#import <UIKit/UIKit.h>@protocol ModifyVlaueDelegate <NSObject>- (void)modifyTakeVale:(NSMutableDictionary *)dic;@end@interface DetailViewController : UIViewController@property(nonatomic, assign)id<ModifyVlaueDelegate>delegate;@property(nonatomic, retain)NSMutableDictionary *tempDic;@end
DetailViewController.m
#import "DetailViewController.h"@interface DetailViewController ()<UITextFieldDelegate>@property(nonatomic, retain)NSArray *array;@end@implementation DetailViewController- (void)dealloc{ [_tempDic release]; [super dealloc];}- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.view.backgroundColor = [UIColor whiteColor]; self.array = @[@"name", @"phone", @"age", @"address", @"hobby", @"sex"]; for (NSInteger i = 0; i < 6; i++) { UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 10 + 30 * i, 120, 30)]; [self.view addSubview:label]; [label release]; label.layer.borderWidth = 1; label.text = self.array[i]; label.textAlignment = NSTextAlignmentCenter; label.tag = i; UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(150, 10 + 30 * i, 120, 30)]; [self.view addSubview:textField]; [textField release]; textField.layer.borderWidth = 1; textField.text = self.tempDic[self.array[i]]; textField.tag = i + 6; textField.delegate = self; } UIButton *modifyButton = [UIButton buttonWithType:UIButtonTypeSystem]; [self.view addSubview:modifyButton]; modifyButton.frame = CGRectMake(150, 530, 50, 30); [modifyButton setTitle:@"修改" forState:UIControlStateNormal]; [modifyButton addTarget:self action:@selector(modifyAction:) forControlEvents:UIControlEventTouchUpInside]; UIButton *returnButton = [UIButton buttonWithType:UIButtonTypeSystem]; [self.view addSubview:returnButton]; returnButton.frame = CGRectMake(210, 530, 50, 30); [returnButton setTitle:@"返回" forState:UIControlStateNormal]; [returnButton addTarget:self action:@selector(returnAction:) forControlEvents:UIControlEventTouchUpInside];}- (BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; return YES;}- (void)textFieldDidEndEditing:(UITextField *)textField { [self.tempDic setObject:textField.text forKey:self.array[textField.tag - 6]];}- (void)returnAction:(UIButton *)button { [self.navigationController popToRootViewControllerAnimated:YES];}- (void)modifyAction:(UIButton *)button {// [self.tempDic setObject:@"阿拉擦" forKey:@"name"]; [self.delegate modifyTakeVale:self.tempDic];}
FemaleCell.h
#import <UIKit/UIKit.h>@interface FemaleCell : UITableViewCell@property(nonatomic, retain)UIView *view;@property(nonatomic, retain)UIImageView *femaleImageView;@property(nonatomic, retain)UILabel *nameLabel;@property(nonatomic, retain)UILabel *phoneLabel;@property(nonatomic, retain)UILabel *addressLabel;@end
FemaleCell.m
#import "FemaleCell.h"#define WIDTH self.contentView.frame.size.width#define HEIGHT self.contentView.frame.size.height@implementation FemaleCell- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { [self createView]; } return self;}- (void)createView { self.view = [[UIView alloc] init]; [self.contentView addSubview:self.view]; [self.view release]; self.view.backgroundColor = [UIColor lightGrayColor]; self.femaleImageView = [[UIImageView alloc] init]; [self.view addSubview:self.femaleImageView]; [self.femaleImageView release]; self.femaleImageView.backgroundColor = [UIColor orangeColor]; self.nameLabel = [[UILabel alloc] init]; [self.view addSubview:self.nameLabel]; [self.nameLabel release]; self.nameLabel.backgroundColor = [UIColor cyanColor]; self.phoneLabel = [[UILabel alloc] init]; [self.view addSubview:self.phoneLabel]; [self.phoneLabel release]; self.phoneLabel.backgroundColor = [UIColor yellowColor]; self.addressLabel = [[UILabel alloc] init]; [self.view addSubview:self.addressLabel]; [self.addressLabel release]; self.addressLabel.backgroundColor = [UIColor greenColor];}- (void)layoutSubviews { [super layoutSubviews]; self.view.frame = CGRectMake(0, 0, WIDTH, HEIGHT); self.femaleImageView.frame = CGRectMake(0, 0, WIDTH / 3, HEIGHT); self.nameLabel.frame = CGRectMake(WIDTH / 2, 0, WIDTH / 3, HEIGHT / 3); self.phoneLabel.frame = CGRectMake(WIDTH / 2, HEIGHT / 3, WIDTH / 3, HEIGHT / 3); self.addressLabel.frame = CGRectMake(WIDTH / 2, HEIGHT / 3 * 2, WIDTH / 3, HEIGHT / 3);}
MaleCell.h
#import <UIKit/UIKit.h>@interface MaleCell : UITableViewCell@property(nonatomic, retain)UIView *view;@property(nonatomic, retain)UILabel *maleNameLabel;@property(nonatomic, retain)UILabel *malePhoneLabel;@property(nonatomic, retain)UIImageView *leftImageView;@property(nonatomic, retain)UIImageView *rightImageview;@end
MaleCell.m
#import "MaleCell.h"#define WIDTH self.contentView.frame.size.width#define HEIGHT self.contentView.frame.size.height@implementation MaleCell- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { [self createView]; } return self;}- (void)createView { self.view = [[UIView alloc] init]; [self.contentView addSubview:self.view]; [self.view release]; self.view.backgroundColor = [UIColor darkGrayColor]; self.maleNameLabel = [[UILabel alloc] init]; [self.contentView addSubview:self.maleNameLabel]; [self.maleNameLabel release]; self.maleNameLabel.backgroundColor = [UIColor cyanColor]; self.malePhoneLabel = [[UILabel alloc] init]; [self.contentView addSubview:self.malePhoneLabel]; [self.malePhoneLabel release]; self.malePhoneLabel.backgroundColor = [UIColor greenColor]; self.leftImageView = [[UIImageView alloc] init]; [self.contentView addSubview:self.leftImageView]; [self.leftImageView release]; self.leftImageView.backgroundColor = [UIColor lightGrayColor]; self.rightImageview = [[UIImageView alloc] init]; [self.contentView addSubview: self.rightImageview]; [self.rightImageview release]; self.rightImageview.backgroundColor = [UIColor grayColor];}- (void)layoutSubviews { [super layoutSubviews]; self.view.frame = CGRectMake(0, 0, WIDTH, HEIGHT); self.maleNameLabel.frame = CGRectMake(WIDTH / 9, 0, WIDTH / 3, HEIGHT / 3); self.malePhoneLabel.frame = CGRectMake(WIDTH / 9 * 5, 0, WIDTH / 3, HEIGHT / 3); self.leftImageView.frame = CGRectMake(WIDTH / 9, HEIGHT / 3, WIDTH / 3, HEIGHT / 3 * 2); self.rightImageview.frame = CGRectMake(WIDTH / 9 * 5, HEIGHT / 3, WIDTH / 3, HEIGHT / 3 * 2);}
0 0
- UI09_自定义cell写通讯录
- UI09_自定义cell
- iOS UI09_自定义cell
- UI09_自定义cell
- UI09_自定义cell
- 自定义cell 通讯录
- UI09_重写Cell
- UI09_UITableView自定义写cell
- 自定义cell高度实现简单通讯录
- iOS编程-------AddressBook_自定义cell 自定义单元格通讯录
- 自定义cell
- 自定义cell
- 自定义cell
- 自定义cell
- 自定义cell
- 自定义cell
- 自定义cell
- 自定义cell
- 通过UIView 来获取 Controller
- 隐马尔可夫模型攻略
- 从K近邻算法、距离度量谈到KD树、SIFT+BBF算法
- 产品需求文档(PRD)到底怎么写?
- Jacobian矩阵和Hessian矩阵
- UI09_自定义cell写通讯录
- PDF表格处理
- 判别式模型与生成式模型
- Web前端HTML+CSS+JS初级入门视频课程 001
- 企业级负载平衡简介
- PIO读取excel文档
- OpenGL中相关函数的意义及用法
- 【Visual C++ 2010】Unicode和ANSI的一些注意事项
- video stride