#import "MyTabBarController.h"
#import "LoginViewController.h"
#import "BViewController.h"
#import "FirstViewController.h"
#import "DViewController.h"
@interface MyTabBarController ()
@end
@implementation MyTabBarController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
[self createViewControllers];
[self createItem];
}
//创建视图控制器
- (void)createViewControllers
{
//注册信息页
LoginViewController *av = [[LoginViewController alloc]init];
UINavigationController *an = [[UINavigationController alloc]initWithRootViewController:av];
//随机数页面不用导航
BViewController *bv = [[BViewController alloc]init];
//三个button页
FirstViewController *cv = [[FirstViewController alloc]init];
UINavigationController *cn = [[UINavigationController alloc]initWithRootViewController:cv];
//设置导航页(人人的导航条)
DViewController *dv = [[DViewController alloc]init];
UINavigationController *dn = [[UINavigationController alloc]initWithRootViewController:dv];
NSArray *arr = [NSArray arrayWithObjects:an,bv,cn,dn, nil];
self.viewControllers = arr;
}
//自定义tabBar的外观
- (void)createItem
{
UIImageView *iv = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 49)];
iv.image = [UIImage imageNamed:@"tab_bg"];
//让imageView接收点击事件
iv.userInteractionEnabled = YES;
//title数组
NSArray *titleArr = [NSArray arrayWithObjects:@"登录",@"随机数",@"3个按钮",@"设置", nil];
for (int i = 0; i<4; i++) {
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(25+80*i, 3, 30, 30);
btn.tag = 1000+i;
[btn setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"tab_%d",i]] forState:UIControlStateNormal];
[btn setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"tab_c%d",i]] forState:UIControlStateSelected];
[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
[iv addSubview:btn];
UILabel *la = [[UILabel alloc]initWithFrame:CGRectMake(-5, 33, 40, 12)];
la.textColor = [UIColor grayColor];
la.tag = 2000+i;
la.textAlignment = NSTextAlignmentCenter;
la.text = [titleArr objectAtIndex:i];
la.font = [UIFont systemFontOfSize:10];
[btn addSubview:la];
if (!i) {
btn.selected = YES;
la.textColor = [UIColor orangeColor];
}
}
[self.tabBar addSubview:iv];
}
- (void)btnClick:(UIButton *)sender
{
for (int i = 0; i<4; i++) {
UIButton *btn = (UIButton *)[self.tabBar viewWithTag:1000+i];
btn.selected = NO;
UILabel *la = (UILabel *)[self.tabBar viewWithTag:2000+i];
la.textColor = [UIColor grayColor];
}
sender.selected = YES;
UILabel *la = (UILabel *)[self.tabBar viewWithTag:sender.tag+1000];
la.textColor = [UIColor orangeColor];
self.selectedIndex = sender.tag - 1000;
}
#import "LoginViewController.h"
#import "RegistViewController.h"
#import "AppDelegate.h"
@interface LoginViewController () <sendValueDelegate>
{
UILabel *_label;
}
@end
@implementation LoginViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor = [UIColor redColor];
self.navigationController.navigationBar.translucent = NO;
self.navigationItem.title = @"登录";
CGFloat s_height = [[UIScreen mainScreen]bounds].size.height;
_label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 320, s_height-64-49-30)];
_label.font = [UIFont boldSystemFontOfSize:20];
_label.numberOfLines = 0;
//如果不给label设个文字,那么_label.text就是空指针
_label.text = @"";
[self.view addSubview:_label];
UIButton *registBtn = [[UIButton alloc]initWithFrame:CGRectMake(110,s_height-64-49-30, 100, 30)];
[registBtn setTitle:@"添加信息" forState:UIControlStateNormal];
registBtn.backgroundColor = [UIColor grayColor]; [registBtn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:registBtn];
}
//button点击事件
- (void)btnClick:(UIButton *)sender
{
//创建一个想要弹出的新的视图的实例
RegistViewController *rvc = [[RegistViewController alloc]init];
//将自己设为第二个页面的代理,这样就能接收代理方法了
rvc.delegate = self;
rvc.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:rvc animated:YES];
}
//代理方法
- (void)postSomeValue:(NSString *)str
{
NSLog(@"str = %@",str);
if (_label.text.length) {
//如果label里已经有文字了,就先加个换行
_label.text = [_label.text stringByAppendingString:@" "];
}
//拼接
_label.text = [_label.text stringByAppendingString:str];
}
#import "RegistViewController.h"
@interface RegistViewController () <UITextFieldDelegate>
{
UITextField *_nametf;
UITextField *_passtf;
UITextField *_passAgain;
}
@end
@implementation RegistViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor = [UIColor orangeColor];
self.navigationItem.title = @"注册";
_nametf = [[UITextField alloc]initWithFrame:CGRectMake(40, 60, 240, 30)];
_nametf.placeholder = @"name";
_nametf.borderStyle = UITextBorderStyleRoundedRect;
[self.view addSubview:_nametf];
_passtf = [[UITextField alloc]initWithFrame:CGRectMake(40, 120, 240, 30)];
_passtf.placeholder = @"pass";
_passtf.borderStyle = UITextBorderStyleRoundedRect;
[self.view addSubview:_passtf];
_passAgain = [[UITextField alloc]initWithFrame:CGRectMake(40, 180, 240, 30)];
_passAgain.placeholder = @"again";
_passAgain.borderStyle = UITextBorderStyleRoundedRect;
[self.view addSubview:_passAgain];
_nametf.tag = 101;
_passtf.tag = 102;
_passAgain.tag = 103;
_nametf.delegate = self;
_passtf.delegate = self;
_passAgain.delegate = self;
UIButton *okBtn = [[UIButton alloc]initWithFrame:CGRectMake(190, 300, 60, 30)];
[okBtn setTitle:@"确定" forState:UIControlStateNormal];
okBtn.tag = 2;
[okBtn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:okBtn];
}
- (void)btnClick:(UIButton *)sender
{
if (_nametf.text.length && _passtf.text.length && _passAgain.text.length) {
if ([_passtf.text isEqualToString:_passAgain.text]) {
//判断代理对象是否可以响应这个函数
if ([self.delegate respondsToSelector:@selector(postSomeValue:)]) {
//把账号和密码传给代理
[self.delegate postSomeValue:[NSString stringWithFormat:@"账号:%@,密码:%@",_nametf.text,_passtf.text]];
}
} else {
UIAlertView *av = [[UIAlertView alloc]initWithTitle:@"两次密码不一致" message:nil delegate:nil cancelButtonTitle:@"好" otherButtonTitles: nil];
[av show];
return;
}
} else {
UIAlertView *av = [[UIAlertView alloc]initWithTitle:@"请完善信息" message:nil delegate:nil cancelButtonTitle:@"好" otherButtonTitles: nil];
[av show];
return;
}
//退出当前视图控制器
[self.navigationController popViewControllerAnimated:YES];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.view endEditing:YES];
}
#pragma mark - tf delegate
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
if (textField.tag==103) {
//如果是最后一个输入框,点击右下角时直接收起键盘
[textField resignFirstResponder];
} else {
//如果不是最后一个,就找到他下面的tf
UITextField *tf = (UITextField *)[self.view viewWithTag:textField.tag+1];
//激活下面那个tf的输入状态
[tf becomeFirstResponder];
}
return YES;
}
#import "BViewController.h"
@interface BViewController ()
{
//时间器的声明
NSTimer *_time;
}
@end
@implementation BViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor = [UIColor orangeColor];
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(10, 30, 300, 100)];
label.backgroundColor = [UIColor grayColor];
label.tag = 1;
label.text = @"随机数";
label.font = [UIFont systemFontOfSize:60];
label.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:label];
UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(110, 200, 100, 50)];
btn.titleLabel.font = [UIFont systemFontOfSize:40];
[btn setTitle:@"开始" forState:UIControlStateNormal];
[btn setTitle:@"停止" forState:UIControlStateSelected];
btn.backgroundColor = [UIColor cyanColor];
[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
//设置文字颜色
[btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
//selected状态下的文字颜色
[btn setTitleColor:[UIColor blueColor] forState:UIControlStateSelected];
[self.view addSubview:btn];
}
- (void)btnClick:(UIButton *)sender
{
if (sender.selected) {
sender.selected = NO;
//停掉这个定时器
[_time invalidate];
} else {
sender.selected = YES;
//在这个地方启动时间器
//第一个参数是间隔,第二个是执行函数的对象,第三个是函数名,第四个参数一般写nil,最后一个是否重复执行
_time = [NSTimer scheduledTimerWithTimeInterval:0.01f target:self selector:@selector(timeFunc) userInfo:nil repeats:YES];
}
}
- (void)timeFunc
{
//从self.view中,找到tag值设为1的那个view
UILabel *newLabel = (UILabel *)[self.view viewWithTag:1];
int a = arc4random_uniform(100);
newLabel.text = [NSString stringWithFormat:@"%d",a];
}
#import "FirstViewController.h"
@interface FirstViewController ()
@end
@implementation FirstViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor = [UIColor yellowColor];
[self.navigationController.navigationBar setBarTintColor:[UIColor redColor]];
self.navigationController.navigationBar.translucent = NO;
self.navigationItem.title = @"按钮一";
UIButton *pushButton = [UIButton buttonWithType:UIButtonTypeCustom];
pushButton.frame = CGRectMake(120, 70, 80, 40);
pushButton.backgroundColor = [UIColor grayColor];
[pushButton setTitle:@"push" forState:UIControlStateNormal];
[pushButton addTarget:self action:@selector(pushButtonClick) forControlEvents:UIControlEventTouchUpInside];
[pushButton setTitleColor:[UIColor greenColor] forState:UIControlStateNormal];
[self.view addSubview:pushButton];
}
- (void)pushButtonClick
{
SecondViewController *svc = [[SecondViewController alloc] init];
svc.postStr = self.navigationItem.title;
svc.delegate = self;
svc.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:svc animated:YES];
}
-(void)postString:(NSString *)str
{//收到代理方法以后设置title
self.navigationItem.title = str;
}
#import "SecondViewController.h"
@interface SecondViewController ()
@end
@implementation SecondViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor = [UIColor cyanColor];
NSArray *titleArr = @[@"按钮一",@"按钮二",@"按钮三"];
for (int i = 0; i < 3; i++) {
UIButton *bu = [UIButton buttonWithType:UIButtonTypeCustom];
bu.frame = CGRectMake(130, 80+i*40, 60, 40);
bu.tag = 10+i;
[bu setTitle:[titleArr objectAtIndex:i] forState:UIControlStateNormal];
//通过上一个页面传过来的str来确定button的状态
if ([self.postStr isEqualToString:[titleArr objectAtIndex:i]]) {
[bu setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
} else {
[bu setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
}
[bu addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:bu];
}
}
- (void)buttonClick:(UIButton *)sender
{
//点击的时候给代理发送一个消息,将button的title字符串传过去
[self.delegate postString:sender.currentTitle];
[self.navigationController popViewControllerAnimated:YES];
}
#import "DViewController.h"
@interface DViewController ()
@end
@implementation DViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor = [UIColor greenColor];
self.navigationController.navigationBar.barTintColor = [UIColor redColor];
//设置导航条的titleView
UIImageView *titleIV = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 60, 35)];
titleIV.image = [UIImage imageNamed:@"logo_title"];
self.navigationItem.titleView = titleIV;
//先创建一个button
UIButton *leftB = [UIButton buttonWithType:UIButtonTypeSystem];
leftB.frame = CGRectMake(0, 0, 33, 30);
[leftB setBackgroundImage:[UIImage imageNamed:@"main_left_nav"] forState:UIControlStateNormal];
[leftB addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
leftB.tag = 1;
//用这个button创建一个UIBarButtonItem
UIBarButtonItem *leftBar = [[UIBarButtonItem alloc] initWithCustomView:leftB];
//设置左边的专用按钮
self.navigationItem.leftBarButtonItem = leftBar;
//右边专用按钮
UIButton *rightB = [UIButton buttonWithType:UIButtonTypeSystem];
rightB.frame = CGRectMake(0, 0, 48, 29);
[rightB setBackgroundImage:[UIImage imageNamed:@"main_right_nav"] forState:UIControlStateNormal];
[rightB addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
rightB.tag = 2;
UIBarButtonItem *rightBar = [[UIBarButtonItem alloc] initWithCustomView:rightB];
self.navigationItem.rightBarButtonItem = rightBar;
}
- (void)buttonClick:(UIButton *)sender
{
NSString *str = nil;
if (sender.tag == 1) {
str = @"左边";
} else {
str = @"右边";
}
UIAlertView *av = [[UIAlertView alloc]initWithTitle:[NSString stringWithFormat:@"点了%@按钮",str] message:nil delegate:nil cancelButtonTitle:@"好" otherButtonTitles: nil];
[av show];
}