///创建第一个视图控制器对象
firstViewController *firstVC=[[firstViewController alloc] init];
//创建第一个naVC
UINavigationController *firstnaVC=[[UINavigationController alloc] initWithRootViewController:firstVC];
//创建tabbar上按钮及其内容
firstVC.tabBarItem=[[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemHistory tag:1000];
//提示有多少消息
firstVC.tabBarItem.badgeValue=@"+99";
//创建第二个
secendViewController *secVC=[[secendViewController alloc] init];
UINavigationController *secnaVC=[[UINavigationController alloc] initWithRootViewController:secVC];
secVC.tabBarItem=[[UITabBarItem alloc] initWithTitle:@"朋友圈" image:[UIImage imageNamed:@"2.png"] selectedImage:[UIImage imageNamed:@"5.png"]];
//创建第三个
thirdViewController *thirdVC=[[thirdViewController alloc] init];
UINavigationController *thirdnaVC=[[UINavigationController alloc] initWithRootViewController:thirdVC];
thirdnaVC.tabBarItem=[[UITabBarItem alloc] initWithTitle:@"设置" image:[UIImage imageNamed:@"2.png"] tag:1001];
//创建第四个
fourViewController *fourVC=[[fourViewController alloc] init];
UINavigationController *fournaVC=[[UINavigationController alloc] initWithRootViewController:fourVC];
fourVC.tabBarItem=[[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemMore tag:1002];
//创建第五个
fiveViewController *fiveVC=[[fiveViewController alloc] init];
UINavigationController *fivenaVC=[[UINavigationController alloc] initWithRootViewController:fiveVC];
fiveVC.tabBarItem=[[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemRecents tag:1003];
//创建第六个
sixViewController *sixVC=[[sixViewController alloc] init];
UINavigationController *sixnaVC=[[UINavigationController alloc] initWithRootViewController:sixVC];
sixVC.tabBarItem=[[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemBookmarks tag:1004];
#pragma mark 按钮创建好,然后创建一个UItabbarcontroller让所有额按钮显示出来
UITabBarController *tabVC=[[UITabBarController alloc] init];
//tabbarcontroller通过一个数组来管理所有要显示出来的naVC
tabVC.viewControllers=@[firstnaVC,secnaVC,thirdnaVC,fournaVC,fivenaVC,sixnaVC];
self.window.rootViewController=tabVC;
//对tabbar进行外观设置
tabVC.tabBar.translucent=NO;
//背景颜色
tabVC.tabBar.barTintColor=[UIColor cyanColor];
//点击之后按钮的颜色
tabVC.tabBar.tintColor=[UIColor blackColor];
//设置代理人
tabVC.delegate=self;
//起始位置,当前的Viewcontroller
//tabVC.selectedIndex=1;
//内存管理
[tabVC release];
[fivenaVC release];
[fiveVC release];
[fourVC release];
[fournaVC release];
[thirdnaVC release];
[thirdVC release];
[secnaVC release];
[secVC release];
[firstnaVC release];
[firstVC release];
return YES;}
-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
viewController.tabBarItem.badgeValue=@"";
viewController.tabBarItem.badgeValue=nil;
}
2.快捷菜单
//每次在长按手势之后都要把VC变成第一响应者
[self becomeFirstResponder];
UITableViewCell *cell=(UITableViewCell *)longPress.view;
//创建一个快捷菜单,单例.
UIMenuController *menu=[UIMenuController sharedMenuController];
//给这个快捷菜单进行定位
[menu setTargetRect:cell.frame inView:cell.superview];
//让菜单显示出来
[menu setMenuVisible:YES animated:YES];
//如果想使用自定义的功能
if (menu.menuItems == nil) {
UIMenuItem *flag=[[UIMenuItem alloc] initWithTitle:@"测试" action:@selector(flag)];
//把这个按钮添加到快捷菜单上
[menu setMenuItems:@[flag]];}
//按钮的方法必须要实现,无论系统方法还是自定义方法,如果不实现对应的方法,不会添加到快捷菜单上}
//#pragma mark 快捷菜单捆绑了一个方法,这个方法必须实现,如果不实现,快捷菜单没法显示
-(BOOL)canBecomeFirstResponder{
return YES;}
-(void)delete:(id)sender{
NSLog(@"删除");}
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
UIMenuController *menu=[UIMenuController sharedMenuController];
[menu update]; }
-(void)copy:(id)sender{
NSLog(@"复制");}
-(void)select:(id)sender{
NSLog(@"选择");}
-(void)flag{
NSLog(@"sds");}
//没有参数,没有返回值的block
//通过block,改变self.view的背景颜色
void (^block)()=^(){
NSLog(@"测试");
self.view.backgroundColor=[UIColor colorWithRed:arc4random()%256/255.0 green:arc4random()%256/255.0 blue:arc4random()%256/255.0 alpha:1];};
//调用
block();
//通过block实现从后向前传值
//block传值不需要返回值,因为调用更需要返回值,所以传值的时候只要参数,不需要返回值
void(^block)(NSString *)=^(NSString * str){
NSLog(@"%@",str);};
void(^blockl)(NSArray *)=^(NSArray *arr){
//传过来的数据的处理都在block中进行
for (NSString *str in arr) {
NSLog(@"%@",str);}};
secendViewController *sec=[[secendViewController alloc] init];
sec.delegate=self;
//2.通过第二页属性接收block
//sec.block=block;
sec.blockl=blockl;
[self.navigationController pushViewController:sec animated:YES];
[sec release];
//[self.delegate changeColor];
[self.navigationController popToRootViewControllerAnimated:YES];
//3.调用传过来的block
//self.block(@"111");self.blockl(@[@"1",@"2",@"sds",@"3wwe"]);
@interface secendViewController : UIViewController
@property(nonatomic,assign)id<secendViewControllerdelegate>delegate;
//1.写一条属性,负责接受第一页向第二页传递过来的block
@property(nonatomic,copy)void(^block)();
@property(nonatomic,copy)void(^block)(NSString *);
@property(nonatomic,copy)void(^blockl)(NSArray *);
//属性的实现
关键词@synthesize 前面是属性名,后面是所对应的成员变量
/@synthesize name=_name;//早Xcode4.5之后才开始不写得,所以在之前的老得工程里,还有大量的@synthesize