IOS_UI_day4_xib
来源:互联网 发布:知微的境界 编辑:程序博客网 时间:2024/06/16 18:01
H:/IOS_UI/day4-00-联系人管理代码说明.m
H:/IOS_UI/day4-01-联系人管理-MJViewController.h
H:/IOS_UI/day4-01-联系人管理-MJViewController.m
H:/IOS_UI/day4-02-联系人管理-MJViewController.h
H:/IOS_UI/day4-02-联系人管理-MJViewController.m
H:/IOS_UI/day4-03-联系人管理-MJViewController.h
H:/IOS_UI/day4-03-联系人管理-MJViewController.m
H:/IOS_UI/day4-04-联系人管理-MJViewController.h
H:/IOS_UI/day4-04-联系人管理-MJViewController.m
H:/IOS_UI/day4-05-联系人管理-MJViewController.h
H:/IOS_UI/day4-05-联系人管理-MJViewController.m
H:/IOS_UI/day4-05-联系人管理-RowView.h
H:/IOS_UI/day4-05-联系人管理-RowView.m
H:/IOS_UI/day4-06-xib的owner-Dog.h
H:/IOS_UI/day4-06-xib的owner-Dog.m
H:/IOS_UI/day4-06-xib的owner-MJViewController.h
H:/IOS_UI/day4-06-xib的owner-MJViewController.m
H:/IOS_UI/day4-07-xib的重用-MJViewController.h
H:/IOS_UI/day4-07-xib的重用-MJViewController.m
H:/IOS_UI/day4-07-xib的重用-RowView.h
H:/IOS_UI/day4-07-xib的重用-RowView.m
01-联系人管理1> 实现方式:纯代码2> 实现功能:添加\删除一行、能获得每行的姓名01-联系人管理 - 21> 实现方式:纯代码2> 实现功能:添加\删除一行、能获得每行的姓名、每行都有个删除按钮01-联系人管理 - 31> 实现方式:代码 + xib2> 实现功能:添加\删除一行、能获得每行的姓名、每行都有个删除按钮(通过代码监听每行的删除按钮)01-联系人管理 - 41> 实现方式:代码 + xib2> 实现功能:添加\删除一行、能获得每行的姓名、每行都有个删除按钮(通过拖线监听每行的删除按钮,MJViewController监听按钮点击)
H:/IOS_UI/day4-01-联系人管理-MJViewController.h
//// MJViewController.h// 04-联系人管理//// Created by apple on 13-11-24.// Copyright (c) 2013年 itcast. All rights reserved.//#import <UIKit/UIKit.h>@interface MJViewController : UIViewController{}// 添加- (IBAction)add:(UIBarButtonItem *)sender;// 删除- (IBAction)remove:(UIBarButtonItem *)sender;@property (weak, nonatomic) IBOutlet UIBarButtonItem *removeItem;@end
H:/IOS_UI/day4-01-联系人管理-MJViewController.m
//// MJViewController.m// 04-联系人管理//// Created by apple on 13-11-24.// Copyright (c) 2013年 itcast. All rights reserved.//#import "MJViewController.h"#define kDuration 0.5#define kRowH 50#define kNameTag 10// 类扩展(class extension,匿名分类)@interface MJViewController (){ NSArray *_allNames;}@end@implementation MJViewController#pragma mark 控制器的view加载完毕的时候调用一次- (void)viewDidLoad{ [super viewDidLoad]; _allNames = @[@"西门庆", @"东门庆", @"北门庆", @"南门庆", @"中门庆"];}#pragma mark 添加一行- (IBAction)add:(UIBarButtonItem *)sender { // 0.取出最后一个子控件 UIView *last = [self.view.subviews lastObject]; // 这行的Y = 最后一个子控件的Y + 最后一个子控件的高度 + 间距 CGFloat rowY = last.frame.origin.y + last.frame.size.height + 1; // 1.创建一行 UIView *rowView = [self createRowView]; // 2.添加一行到控制器的view中 [self.view addSubview:rowView]; // 3.让删除item有效 _removeItem.enabled = YES; // 4.执行动画 rowView.frame = CGRectMake(320, rowY, 320, kRowH); rowView.alpha = 0; // 4.1.开始动画 [UIView animateWithDuration:kDuration animations:^{ rowView.frame = CGRectMake(0, rowY, 320, kRowH); rowView.alpha = 1; }];}#pragma mark 创建一行- (UIView *)createRowView{ // 1.创建红色的父控件 UIView *rowView = [[UIView alloc] init]; rowView.backgroundColor = [UIColor redColor]; // 红色 // 2.添加名字(标签) UILabel *name = [[UILabel alloc] init]; name.frame = CGRectMake(0, 0, 320, kRowH);// name.center = CGPointxMake(160, kRowH * 0.5); int nameIndex = arc4random_uniform(_allNames.count); name.text = _allNames[nameIndex]; name.backgroundColor = [UIColor clearColor]; // 设置文字居中 name.textAlignment = NSTextAlignmentCenter; name.tag = kNameTag; [rowView addSubview:name]; // 3.添加头像// UIButton *icon = [[UIButton alloc] init]; UIButton *icon = [UIButton buttonWithType:UIButtonTypeCustom]; icon.frame = CGRectMake(20, 0, 50, kRowH); // 随机产生文件名// int ramdomIndex = arc4random() % 9; int randomIndex = arc4random_uniform(9); NSString *iconName = [NSString stringWithFormat:@"01%d.png", randomIndex]; // 设置图片 [icon setImage:[UIImage imageNamed:iconName] forState:UIControlStateNormal]; // 添加监听器 [icon addTarget:self action:@selector(iconClick:) forControlEvents:UIControlEventTouchUpInside]; [rowView addSubview:icon]; return rowView;}#pragma mark 监听按钮点击- (void)iconClick:(UIButton *)btn{ // 1.取得按钮的父控件(因为label和btn处在同一个父控件中)// btn.superview; // 2.获得文本标签 UILabel *label = (UILabel *)[btn.superview viewWithTag:kNameTag]; // 3.打印 NSLog(@"名字是:%@", label.text);}#pragma mark 删除一行- (IBAction)remove:(UIBarButtonItem *)sender { // 1.取出最后一个子控件 UIView *last = [self.view.subviews lastObject]; [UIView animateWithDuration:kDuration animations:^{ CGRect tempF = last.frame; tempF.origin.x = 320; last.frame = tempF; last.alpha = 0; } completion:^(BOOL finished) { [last removeFromSuperview]; // 剩下的子控件个数 > 1就能够点击“删除” _removeItem.enabled = self.view.subviews.count > 1; }];}@end
H:/IOS_UI/day4-02-联系人管理-MJViewController.h
//// MJViewController.h// 04-联系人管理//// Created by apple on 13-11-24.// Copyright (c) 2013年 itcast. All rights reserved.//#import <UIKit/UIKit.h>@interface MJViewController : UIViewController{}// 添加- (IBAction)add:(UIBarButtonItem *)sender;// 删除- (IBAction)remove:(UIBarButtonItem *)sender;@property (weak, nonatomic) IBOutlet UIBarButtonItem *removeItem;@end
H:/IOS_UI/day4-02-联系人管理-MJViewController.m
//// MJViewController.m// 04-联系人管理//// Created by apple on 13-11-24.// Copyright (c) 2013年 itcast. All rights reserved.//#import "MJViewController.h"#define kDuration 0.5#define kRowH 50#define kNameTag 10// 类扩展(class extension,匿名分类)@interface MJViewController (){ NSArray *_allNames;}@end@implementation MJViewController#pragma mark 控制器的view加载完毕的时候调用一次- (void)viewDidLoad{ [super viewDidLoad]; _allNames = @[@"西门庆", @"东门庆", @"北门庆", @"南门庆", @"中门庆"];}#pragma mark 添加一行- (IBAction)add:(UIBarButtonItem *)sender { // 0.取出最后一个子控件 UIView *last = [self.view.subviews lastObject]; // 这行的Y = 最后一个子控件的Y + 最后一个子控件的高度 + 间距 CGFloat rowY = last.frame.origin.y + last.frame.size.height + 1; // 1.创建一行 UIView *rowView = [self createRowView]; // 2.添加一行到控制器的view中 [self.view addSubview:rowView]; // 3.让删除item有效 _removeItem.enabled = YES; // 4.执行动画 rowView.frame = CGRectMake(320, rowY, 320, kRowH); rowView.alpha = 0; // 4.1.开始动画 [UIView animateWithDuration:kDuration animations:^{ rowView.frame = CGRectMake(0, rowY, 320, kRowH); rowView.alpha = 1; }];}#pragma mark 创建一行- (UIView *)createRowView{ // 1.创建红色的父控件 UIView *rowView = [[UIView alloc] init]; rowView.backgroundColor = [UIColor redColor]; // 红色 // 2.添加名字(标签) UILabel *name = [[UILabel alloc] init]; name.frame = CGRectMake(0, 0, 320, kRowH);// name.center = CGPointxMake(160, kRowH * 0.5); int nameIndex = arc4random_uniform(_allNames.count); name.text = _allNames[nameIndex]; name.backgroundColor = [UIColor clearColor]; // 设置文字居中 name.textAlignment = NSTextAlignmentCenter; name.tag = kNameTag; // 绑定标记 [rowView addSubview:name]; // 3.添加头像// UIButton *icon = [[UIButton alloc] init]; UIButton *icon = [UIButton buttonWithType:UIButtonTypeCustom]; icon.frame = CGRectMake(20, 0, 50, kRowH); // 随机产生文件名// int ramdomIndex = arc4random() % 9; int randomIndex = arc4random_uniform(9); NSString *iconName = [NSString stringWithFormat:@"01%d.png", randomIndex]; // 设置图片 [icon setImage:[UIImage imageNamed:iconName] forState:UIControlStateNormal]; // 添加监听器 [icon addTarget:self action:@selector(iconClick:) forControlEvents:UIControlEventTouchUpInside]; [rowView addSubview:icon]; // 4.删除按钮 UIButton *delete = [UIButton buttonWithType:UIButtonTypeRoundedRect]; delete.frame = CGRectMake(250, 10, 60, 35); [delete setTitle:@"删除" forState:UIControlStateNormal]; [delete addTarget:self action:@selector(deleteClick:) forControlEvents:UIControlEventTouchUpInside]; [rowView addSubview:delete]; return rowView;}#pragma mark 监听删除按钮点击- (void)deleteClick:(UIButton *)btn{ [UIView animateWithDuration:kDuration animations:^{ CGRect tempF = btn.superview.frame; tempF.origin.x = 320; btn.superview.frame = tempF; btn.superview.alpha = 0; } completion:^(BOOL finished) { // 1.获得即将删除的这行在数组中的位置 int startIndex = [self.view.subviews indexOfObject:btn.superview]; // 2.删除当前行 [btn.superview removeFromSuperview]; [UIView animateWithDuration:0.3 animations:^{ // 3.遍历后面的子控件 for (int i = startIndex; i<self.view.subviews.count; i++) { UIView *child = self.view.subviews[i]; CGRect tempF = child.frame; tempF.origin.y -= kRowH + 1; child.frame = tempF; } }]; // 4.判断垃圾桶 _removeItem.enabled = self.view.subviews.count > 1; }];}#pragma mark 监听头像按钮点击- (void)iconClick:(UIButton *)btn{ // 1.取得按钮的父控件(因为label和btn处在同一个父控件中)// btn.superview; // 2.获得文本标签 UILabel *label = (UILabel *)[btn.superview viewWithTag:kNameTag]; // 3.打印 NSLog(@"名字是:%@", label.text);}#pragma mark 删除一行- (IBAction)remove:(UIBarButtonItem *)sender { // 1.取出最后一个子控件 UIView *last = [self.view.subviews lastObject]; [UIView animateWithDuration:kDuration animations:^{ CGRect tempF = last.frame; tempF.origin.x = 320; last.frame = tempF; last.alpha = 0; } completion:^(BOOL finished) { [last removeFromSuperview]; // 剩下的子控件个数 > 1就能够点击“删除” _removeItem.enabled = self.view.subviews.count > 1; }];}@end
H:/IOS_UI/day4-03-联系人管理-MJViewController.h
//// MJViewController.h// 04-联系人管理//// Created by apple on 13-11-24.// Copyright (c) 2013年 itcast. All rights reserved.//#import <UIKit/UIKit.h>@interface MJViewController : UIViewController{}// 添加- (IBAction)add:(UIBarButtonItem *)sender;// 删除- (IBAction)remove:(UIBarButtonItem *)sender;@property (weak, nonatomic) IBOutlet UIBarButtonItem *removeItem;@end
H:/IOS_UI/day4-03-联系人管理-MJViewController.m
//// MJViewController.m// 04-联系人管理//// Created by apple on 13-11-24.// Copyright (c) 2013年 itcast. All rights reserved.//#import "MJViewController.h"#define kDuration 0.5#define kRowH 50#define kNameTag 10// 类扩展(class extension,匿名分类)@interface MJViewController (){ NSArray *_allNames;}@end@implementation MJViewController#pragma mark 控制器的view加载完毕的时候调用一次- (void)viewDidLoad{ [super viewDidLoad]; _allNames = @[@"西门庆", @"东门庆", @"北门庆", @"南门庆", @"中门庆"];}#pragma mark 添加一行- (IBAction)add:(UIBarButtonItem *)sender { // 0.取出最后一个子控件 UIView *last = [self.view.subviews lastObject]; // 这行的Y = 最后一个子控件的Y + 最后一个子控件的高度 + 间距 CGFloat rowY = last.frame.origin.y + last.frame.size.height + 1; // 1.创建一行 UIView *rowView = [self createRowView]; // 2.添加一行到控制器的view中 [self.view addSubview:rowView]; // 3.让删除item有效 _removeItem.enabled = YES; // 4.执行动画 rowView.frame = CGRectMake(320, rowY, 320, kRowH); rowView.alpha = 0; // 4.1.开始动画 [UIView animateWithDuration:kDuration animations:^{ rowView.frame = CGRectMake(0, rowY, 320, kRowH); rowView.alpha = 1; }];}#pragma mark 创建一行(从xib中加载一行的view)// xib == nib- (UIView *)createRowView{ // 1.加载RowView.xib文件,创建Objects下面的所有控件,并且按顺序装到数组中返回 NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"RowView" owner:nil options:nil]; // 2.取出一行的红色view UIView *rowView = views[0]; // 3.设置头像 UIButton *icon = (UIButton *)[rowView viewWithTag:1]; NSString *iconName = [NSString stringWithFormat:@"01%d.png", arc4random_uniform(9)]; [icon setImage:[UIImage imageNamed:iconName] forState:UIControlStateNormal]; // 4.设置姓名 UILabel *name = (UILabel *)[rowView viewWithTag:2]; name.text = _allNames[arc4random_uniform(_allNames.count)]; // 5.监听删除按钮 UIButton *delete = (UIButton *)[rowView viewWithTag:3]; [delete addTarget:self action:@selector(deleteClick:) forControlEvents:UIControlEventTouchUpInside]; return rowView;}#pragma mark 监听删除按钮点击- (void)deleteClick:(UIButton *)btn{ [UIView animateWithDuration:kDuration animations:^{ CGRect tempF = btn.superview.frame; tempF.origin.x = 320; btn.superview.frame = tempF; btn.superview.alpha = 0; } completion:^(BOOL finished) { // 1.获得即将删除的这行在数组中的位置 int startIndex = [self.view.subviews indexOfObject:btn.superview]; // 2.删除当前行 [btn.superview removeFromSuperview]; [UIView animateWithDuration:0.3 animations:^{ // 3.遍历后面的子控件 for (int i = startIndex; i<self.view.subviews.count; i++) { UIView *child = self.view.subviews[i]; CGRect tempF = child.frame; tempF.origin.y -= kRowH + 1; child.frame = tempF; } }]; // 4.判断垃圾桶 _removeItem.enabled = self.view.subviews.count > 1; }];}#pragma mark 监听头像按钮点击- (void)iconClick:(UIButton *)btn{ // 1.取得按钮的父控件(因为label和btn处在同一个父控件中)// btn.superview; // 2.获得文本标签 UILabel *label = (UILabel *)[btn.superview viewWithTag:kNameTag]; // 3.打印 NSLog(@"名字是:%@", label.text);}#pragma mark 删除一行- (IBAction)remove:(UIBarButtonItem *)sender { // 1.取出最后一个子控件 UIView *last = [self.view.subviews lastObject]; [UIView animateWithDuration:kDuration animations:^{ CGRect tempF = last.frame; tempF.origin.x = 320; last.frame = tempF; last.alpha = 0; } completion:^(BOOL finished) { [last removeFromSuperview]; // 剩下的子控件个数 > 1就能够点击“删除” _removeItem.enabled = self.view.subviews.count > 1; }];}@end
H:/IOS_UI/day4-04-联系人管理-MJViewController.h
//// MJViewController.h// 04-联系人管理//// Created by apple on 13-11-24.// Copyright (c) 2013年 itcast. All rights reserved.//#import <UIKit/UIKit.h>@interface MJViewController : UIViewController{}// 添加- (IBAction)add:(UIBarButtonItem *)sender;// 删除- (IBAction)remove:(UIBarButtonItem *)sender;// 监听每一行的删除按钮- (IBAction)deleteClick:(UIButton *)btn;@property (weak, nonatomic) IBOutlet UIBarButtonItem *removeItem;@end
H:/IOS_UI/day4-04-联系人管理-MJViewController.m
//// MJViewController.m// 04-联系人管理//// Created by apple on 13-11-24.// Copyright (c) 2013年 itcast. All rights reserved.//#import "MJViewController.h"#define kDuration 0.5#define kRowH 50#define kNameTag 10// 类扩展(class extension,匿名分类)@interface MJViewController (){ NSArray *_allNames;}@end@implementation MJViewController#pragma mark 控制器的view加载完毕的时候调用一次- (void)viewDidLoad{ [super viewDidLoad]; _allNames = @[@"西门庆", @"东门庆", @"北门庆", @"南门庆", @"中门庆"];}#pragma mark 添加一行- (IBAction)add:(UIBarButtonItem *)sender { // 0.取出最后一个子控件 UIView *last = [self.view.subviews lastObject]; // 这行的Y = 最后一个子控件的Y + 最后一个子控件的高度 + 间距 CGFloat rowY = last.frame.origin.y + last.frame.size.height + 1; // 1.创建一行 UIView *rowView = [self createRowView]; // 2.添加一行到控制器的view中 [self.view addSubview:rowView]; // 3.让删除item有效 _removeItem.enabled = YES; // 4.执行动画 rowView.frame = CGRectMake(320, rowY, 320, kRowH); rowView.alpha = 0; // 4.1.开始动画 [UIView animateWithDuration:kDuration animations:^{ rowView.frame = CGRectMake(0, rowY, 320, kRowH); rowView.alpha = 1; }];}#pragma mark 创建一行(从xib中加载一行的view)// xib == nib- (UIView *)createRowView{ // 1.加载RowView.xib文件,创建Objects下面的所有控件,并且按顺序装到数组中返回 NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"RowView" owner:self options:nil]; // 2.取出一行的红色view UIView *rowView = views[0]; // 3.设置头像 UIButton *icon = (UIButton *)[rowView viewWithTag:1]; NSString *iconName = [NSString stringWithFormat:@"01%d.png", arc4random_uniform(9)]; [icon setImage:[UIImage imageNamed:iconName] forState:UIControlStateNormal]; // 4.设置姓名 UILabel *name = (UILabel *)[rowView viewWithTag:2]; name.text = _allNames[arc4random_uniform(_allNames.count)]; return rowView;}#pragma mark 监听删除按钮点击- (void)deleteClick:(UIButton *)btn{ [UIView animateWithDuration:kDuration animations:^{ CGRect tempF = btn.superview.frame; tempF.origin.x = 320; btn.superview.frame = tempF; btn.superview.alpha = 0; } completion:^(BOOL finished) { // 1.获得即将删除的这行在数组中的位置 int startIndex = [self.view.subviews indexOfObject:btn.superview]; // 2.删除当前行 [btn.superview removeFromSuperview]; [UIView animateWithDuration:0.3 animations:^{ // 3.遍历后面的子控件 for (int i = startIndex; i<self.view.subviews.count; i++) { UIView *child = self.view.subviews[i]; CGRect tempF = child.frame; tempF.origin.y -= kRowH + 1; child.frame = tempF; } }]; // 4.判断垃圾桶 _removeItem.enabled = self.view.subviews.count > 1; }];}#pragma mark 监听头像按钮点击- (void)iconClick:(UIButton *)btn{ // 1.取得按钮的父控件(因为label和btn处在同一个父控件中)// btn.superview; // 2.获得文本标签 UILabel *label = (UILabel *)[btn.superview viewWithTag:kNameTag]; // 3.打印 NSLog(@"名字是:%@", label.text);}#pragma mark 删除一行- (IBAction)remove:(UIBarButtonItem *)sender { // 1.取出最后一个子控件 UIView *last = [self.view.subviews lastObject]; [UIView animateWithDuration:kDuration animations:^{ CGRect tempF = last.frame; tempF.origin.x = 320; last.frame = tempF; last.alpha = 0; } completion:^(BOOL finished) { [last removeFromSuperview]; // 剩下的子控件个数 > 1就能够点击“删除” _removeItem.enabled = self.view.subviews.count > 1; }];}@end
H:/IOS_UI/day4-05-联系人管理-MJViewController.h
//// MJViewController.h// 04-联系人管理//// Created by apple on 13-11-24.// Copyright (c) 2013年 itcast. All rights reserved.//#import <UIKit/UIKit.h>@interface MJViewController : UIViewController{}// 添加- (IBAction)add:(UIBarButtonItem *)sender;// 删除- (IBAction)remove:(UIBarButtonItem *)sender;// 监听每一行的删除按钮- (IBAction)deleteClick:(UIButton *)btn;@property (weak, nonatomic) IBOutlet UIBarButtonItem *removeItem;@end
H:/IOS_UI/day4-05-联系人管理-MJViewController.m
//// MJViewController.m// 04-联系人管理//// Created by apple on 13-11-24.// Copyright (c) 2013年 itcast. All rights reserved.//#import "MJViewController.h"#import "RowView.h"#define kDuration 0.5#define kRowH 50#define kNameTag 10// 类扩展(class extension,匿名分类)@interface MJViewController (){ NSArray *_allNames;}@end@implementation MJViewController#pragma mark 控制器的view加载完毕的时候调用一次- (void)viewDidLoad{ [super viewDidLoad]; _allNames = @[@"西门庆", @"东门庆", @"北门庆", @"南门庆", @"中门庆"];}#pragma mark 添加一行- (IBAction)add:(UIBarButtonItem *)sender { // 0.取出最后一个子控件 UIView *last = [self.view.subviews lastObject]; // 这行的Y = 最后一个子控件的Y + 最后一个子控件的高度 + 间距 CGFloat rowY = last.frame.origin.y + last.frame.size.height + 1; // 1.创建一行 UIView *rowView = [self createRowView]; // 2.添加一行到控制器的view中 [self.view addSubview:rowView]; // 3.让删除item有效 _removeItem.enabled = YES; // 4.执行动画 rowView.frame = CGRectMake(320, rowY, 320, kRowH); rowView.alpha = 0; // 4.1.开始动画 [UIView animateWithDuration:kDuration animations:^{ rowView.frame = CGRectMake(0, rowY, 320, kRowH); rowView.alpha = 1; }];}#pragma mark 创建一行(从xib中加载一行的view)// xib == nib- (UIView *)createRowView{ NSString *icon = [NSString stringWithFormat:@"01%d.png", arc4random_uniform(9)]; NSString *name = _allNames[arc4random_uniform(_allNames.count)]; RowView *rowView = [RowView rowViewWithIcon:icon name:name]; return rowView;}#pragma mark 监听删除按钮点击- (void)deleteClick:(UIButton *)btn{ [UIView animateWithDuration:kDuration animations:^{ CGRect tempF = btn.superview.frame; tempF.origin.x = 320; btn.superview.frame = tempF; btn.superview.alpha = 0; } completion:^(BOOL finished) { // 1.获得即将删除的这行在数组中的位置 int startIndex = [self.view.subviews indexOfObject:btn.superview]; // 2.删除当前行 [btn.superview removeFromSuperview]; [UIView animateWithDuration:0.3 animations:^{ // 3.遍历后面的子控件 for (int i = startIndex; i<self.view.subviews.count; i++) { UIView *child = self.view.subviews[i]; CGRect tempF = child.frame; tempF.origin.y -= kRowH + 1; child.frame = tempF; } }]; // 4.判断垃圾桶 _removeItem.enabled = self.view.subviews.count > 1; }];}#pragma mark 监听头像按钮点击- (void)iconClick:(UIButton *)btn{ // 1.取得按钮的父控件(因为label和btn处在同一个父控件中)// btn.superview; // 2.获得文本标签 UILabel *label = (UILabel *)[btn.superview viewWithTag:kNameTag]; // 3.打印 NSLog(@"名字是:%@", label.text);}#pragma mark 删除一行- (IBAction)remove:(UIBarButtonItem *)sender { // 1.取出最后一个子控件 UIView *last = [self.view.subviews lastObject]; [UIView animateWithDuration:kDuration animations:^{ CGRect tempF = last.frame; tempF.origin.x = 320; last.frame = tempF; last.alpha = 0; } completion:^(BOOL finished) { [last removeFromSuperview]; // 剩下的子控件个数 > 1就能够点击“删除” _removeItem.enabled = self.view.subviews.count > 1; }];}@end
H:/IOS_UI/day4-05-联系人管理-RowView.h
//// RowView.h// 01-联系人管理//// Created by apple on 13-11-25.// Copyright (c) 2013年 itcast. All rights reserved.//#import <UIKit/UIKit.h>@interface RowView : UIView+ (id)rowViewWithIcon:(NSString *)icon name:(NSString *)name;@property (nonatomic, weak) IBOutlet UIButton *iconBtn;@property (nonatomic, weak) IBOutlet UILabel *nameLabel;@end
H:/IOS_UI/day4-05-联系人管理-RowView.m
//// RowView.m// 01-联系人管理//// Created by apple on 13-11-25.// Copyright (c) 2013年 itcast. All rights reserved.//#import "RowView.h"@implementation RowView+ (id)rowViewWithIcon:(NSString *)icon name:(NSString *)name{ RowView *view = [[NSBundle mainBundle] loadNibNamed:@"RowView" owner:nil options:nil][0]; // 1.设置图标// UIButton *iconBtn = (UIButton *)[view viewWithTag:1]; [view.iconBtn setImage:[UIImage imageNamed:icon] forState:UIControlStateNormal]; // 2.设置姓名// UILabel *nameLabel = (UILabel *)[view viewWithTag:2]; view.nameLabel.text = name; return view;}@end
H:/IOS_UI/day4-06-xib的owner-Dog.h
//// Dog.h// 02-xib的owner//// Created by apple on 13-11-25.// Copyright (c) 2013年 itcast. All rights reserved.//#import <Foundation/Foundation.h>@interface Dog : NSObject@property (nonatomic, assign) int age;- (IBAction)btnClick;@end
H:/IOS_UI/day4-06-xib的owner-Dog.m
//// Dog.m// 02-xib的owner//// Created by apple on 13-11-25.// Copyright (c) 2013年 itcast. All rights reserved.//#import "Dog.h"@implementation Dog- (void)btnClick{ NSLog(@"%d岁的狗在汪汪.....", _age);}/*- (NSArray *)loadNibNamed:(NSString *)name owner:(id)owner options:(NSDictionary *)options{ // 解析HisView.xib文件 // 创建Objects下面的所有对象 // 创建view UIView *blue = [[UIView alloc] init]; blue.backgroundColor = [UIColor blueColor]; //....设置其他属性 // 创建按钮 UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [btn setTitle:@"我是按钮" forState:UIControlStateNormal]; [btn addTarget:owner action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];// ....设置其他属性 [blue addSubview:btn]; // 创建文本输入框 UITextField *field = [[UITextField alloc] init]; // ... 设置其他属性 return @[ blue, field];} */@end
H:/IOS_UI/day4-06-xib的owner-MJViewController.h
//// MJViewController.h// 02-xib的owner//// Created by apple on 13-11-25.// Copyright (c) 2013年 itcast. All rights reserved.//#import <UIKit/UIKit.h>@interface MJViewController : UIViewController- (IBAction)leftClick;- (IBAction)rightClick;@end
H:/IOS_UI/day4-06-xib的owner-MJViewController.m
//// MJViewController.m// 02-xib的owner//// Created by apple on 13-11-25.// Copyright (c) 2013年 itcast. All rights reserved.//#import "MJViewController.h"#import "Dog.h"@interface MJViewController (){ Dog *_d1; Dog *_d2;}@end@implementation MJViewController- (void)viewDidLoad{ [super viewDidLoad]; // 1.加载xib文件 NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil]; UIView *greenView = array[0]; // 2.添加到控制器的view里面去 [self.view addSubview:greenView]; // 3.// UIButton *left = (UIButton *)[greenView viewWithTag:10];// [left addTarget:self action:@selector(leftClick) forControlEvents:UIControlEventTouchUpInside];// // UIButton *right = (UIButton *)[greenView viewWithTag:20];// [right addTarget:self action:@selector(rightClick) forControlEvents:UIControlEventTouchUpInside]; _d1 = [[Dog alloc] init]; _d1.age = 10; _d2 = [[Dog alloc] init]; _d2.age = 20; // 添加蓝色的view UIView *blueView = [[NSBundle mainBundle] loadNibNamed:@"HisView" owner:_d2 options:nil][0]; blueView.center = CGPointMake(160, 200); [self.view addSubview:blueView];}- (void)leftClick{ NSLog(@"left------");}- (void)rightClick{ NSLog(@"right------");}@end
H:/IOS_UI/day4-07-xib的重用-MJViewController.h
//// MJViewController.h// 03-xib的重用//// Created by apple on 13-11-25.// Copyright (c) 2013年 itcast. All rights reserved.//#import <UIKit/UIKit.h>@interface MJViewController : UIViewController@end
H:/IOS_UI/day4-07-xib的重用-MJViewController.m
//// MJViewController.m// 03-xib的重用//// Created by apple on 13-11-25.// Copyright (c) 2013年 itcast. All rights reserved.//#import "MJViewController.h"#import "RowView.h"@interface MJViewController ()@end@implementation MJViewController- (void)viewDidLoad{ [super viewDidLoad]; RowView *row = [RowView rowViewWithIcon:@"017.png" name:@"哈哈哈"]; [self.view addSubview:row];}@end
H:/IOS_UI/day4-07-xib的重用-RowView.h
//// RowView.h// 01-联系人管理//// Created by apple on 13-11-25.// Copyright (c) 2013年 itcast. All rights reserved.//#import <UIKit/UIKit.h>@interface RowView : UIView+ (id)rowViewWithIcon:(NSString *)icon name:(NSString *)name;@property (nonatomic, weak) IBOutlet UIButton *iconBtn;@property (nonatomic, weak) IBOutlet UILabel *nameLabel;@end
H:/IOS_UI/day4-07-xib的重用-RowView.m
//// RowView.m// 01-联系人管理//// Created by apple on 13-11-25.// Copyright (c) 2013年 itcast. All rights reserved.//#import "RowView.h"@implementation RowView+ (id)rowViewWithIcon:(NSString *)icon name:(NSString *)name{ RowView *view = [[NSBundle mainBundle] loadNibNamed:@"RowView" owner:nil options:nil][0]; // 1.设置图标// UIButton *iconBtn = (UIButton *)[view viewWithTag:1]; [view.iconBtn setImage:[UIImage imageNamed:icon] forState:UIControlStateNormal]; // 2.设置姓名// UILabel *nameLabel = (UILabel *)[view viewWithTag:2]; view.nameLabel.text = name; return view;}@end
0 0
- IOS_UI_day4_xib
- android模拟器上显示正常 真机显示小
- Oracle10g等待事件类型wait_class说明
- idea中导入spring-framework-master源码
- windows 平台下 skia 下载安装说明
- linux 下各errno的含义
- IOS_UI_day4_xib
- 无法从命令行或调试器启动服务。必须首先安装Windows服务(使用installutil.exe),然后用ServerExplorer、Windows服务器管理工具或NET START命令启动它。
- windows下mysql忘记root密码的解决方法
- OPPO官方回应Find 7屏幕泛黄:原来如此
- Mysql存储过程和函数
- socket中的短连接与长连接
- FTP的工作原理
- 捉虫记录:解决内存泄漏问题
- DLL编写中extern “C”和__stdcall的作用