IOS学习笔记(5)
上一篇:http://www.zzzyk.com/kf/201301/185018.htmlUINavigationController实现导航
在App委托中的.h文件里
@property( nonatomic ,strong)UINavigationController *nav;
.m文件里
@synthesize nav;
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
self.nav = [ [UINavigationController alloc]initWithRootViewController:self.rootViewController];
[self.window addSubview: self.nav.view ];
return YES;
}
在viewController页面里面
-(void)viewDidLoad{
self.title = @"hello World";
}
更深一点的:
想在第一个视图控制器出现在屏幕上5秒后把第二个视图控制器拖到它的顶部:
首先在第一个视图控制器放入第二个视图控制器:
#import "SecondViewController"
-(void)pushSecondController{
SecondViewController *secondController = [ [ SecondViewController alloc]initWithNibName:nil bundle:NULL];
[ self.nav pushViewController:secondController animated:YES];
}
-(void)viewDidAppear:(BOOL)paramAnimated{
[super viewDidAppear:paramAnimated];
[self performSelector:@selecter(pushSecondController) withObject:nil afterDelay:5.0f];
}
既然能够拖进来,那么就能移出去:
-(void)goBack{
[ self.nav popViewControllerAnimated:YES];
}
-(void)DidAppear:(BOOL)paramAnimated{
[super viewDidAppear:paramAnimated];
[self performSelector:@selector(goBack) withObject:nil afterDelay:5.0f];
}
调整视图控制器中导航控制器的序列
使用 UINavigationController 类的 viewControllers 属性获得并修改与导航控制器关联的视图控制器的排列顺 序:
-(void)goBack{
NSArray *currentControllers = self.nav.viewControllers;
NSMutableArray *newControllers = [NSMutableArray arrayWithArray:currentControllers];
[newControllers removeLastObject];
self.nav.viewControllers = newControllers;
//动画完成
//[self.nav setViewControllers:newControllers animated:YES];
}
为了从当前视图控制器相关联的导航控制器的层次结构中推送最后一个视图控制器,可以在任何视图控制 器内调用此方法。
在导航栏展示一张图片
要在导航控制器的当前视图中的标题中用一张图片代替文本
-(void)viewDidLoad{
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
UIImageView *imageView = [ [UIImageView alloc] initWithFrame:CGRectMake(0.0f,0.0f,100.0f,40.0f);
imageView.contentMode = UIViewContentModeScaleAspectFit;
UIImage *image = [UIImage imageNamed:@"FullSizeLogo.png"];
[imageView setImage:image];
self.navigationItem.titleView = imageView;
}
使用UIBarButtonItem类在导航栏里面添加按钮
创建一个导航按钮前提:创建一个UIBarButtonItem类实例,使用视图空间的NavigationItem属性给导航栏添加按钮。NavigationItem属性允许我们设置这个导航栏。这个属性自身有两个属性,分别为rightBarButtonItem 和 leftBarButtonItem 。这两个属性都属于UIBarButtonItem类。
-(void)viewDidLoad{
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
self.title = @"hello World";
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"right" style:UIBarButtonItemStylePlain target:self action:@selector(performRight:)];
}
-(void) performRight:(id)right{
NSLog(@"clicked rightButton");
}
系统按钮初始化方法一:
initWithBarButtonSystemItem:target:action:初始化方法
self.navigationItem.leftBarButtonItem = [ [UIBarButtonItem alloc] initWithBartButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(performRight:)];
导航按钮的初始化按钮:
typedef enum{
UIBarButtonSystemItem Done/Cancel/Edit/Save/Add/FlexibleSpace/FixedSpace/Compose/Reply/Action/Organize/Bookmarks/Search/Refresh/Stop/Camera/Trash/Play/Pause/Rewind/FastForward/Undo/Redo/PageCurl/
}UIBarButtonSystemItem;
系统按钮初始化方法二:
initWithCustomView:方法(可以将UISwitch添加)
-(void)viewDidLoad{
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
self.title = @"hello World";
UISwitch *mySwitch = [ [UISwitch alloc]init];
mySwitch.on = YES;
[mySwitch addTarget:self action:@selector(SwitchChanged:) forControlEvents:UIControlEventValueChanged];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:mySwitch];
}
可以了,测试一下吧。
那么再做一个上下箭头的demo吧。
-(void)viewDidLoad{
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
self.title = @"hello World";
NSArray *items = [[NSArray alloc]initWithObjects:[UIImage imageNamed:@"UpArrow.png"],[UIImage imageNamed:@"DownArrow.png"],nil];
UISegmentedControl *segmentedControl = [ [UISegmentedControl alloc]initWithItems:items];
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
segmentedControl.momentary = YES;
[segmentedControl addTarget:self action:@selector(segmentedControlTapped:) forControlEvents:UIControlEventValueChanged];
self.navigationItem.rightBarButtonItem = [ [UIBarButtonItem alloc]initWithCustomView:segmentedControl];
//设置动画
//UIBarButtonItem *rightBarButton = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];
[self.navigationItem setRightBarButtonItem:rightBarButton animated:YES];
}
使用UITabBarController显示多视图控制器
AppDelegate.h里面
@class FirstViewController;
@class SecondViewController;
@property( nonatomic,strong)FirstViewController *firstViewController;
@property(non atomic,strong)SecondViewController *secondViewController;
@property(non atomic,strong)UITableBarController *tabBarController;
AppDelegate.m文件里
@synthesize firstViewController,secondViewController,tabBarController;
self.firstViewController = [[FirstViewController alloc]initWithNibName:nil bundle:NULL];
self.secondViewController = [[SecondViewController alloc]initWithNibName:nil bundle:NULL];
NSArray *twoViewControllers = [ [NSArray alloc]initWithObjects:self.firstViewController,self.secondViewController,nil];
self.tabBarController = [[UITabBarController alloc]init];
[self.tabBarController setViewControllers:twoViewControllers];
运行程序一看,没有导航啊。怎么办呢?接着往下进行吧。
在AppDelegate.h中
@proterty(non atomic,strong)UINavigatio
补充:移动开发 , IOS ,
- 更多wap疑问解答:
- 新人求助QPainter
- 为什么程序都退出了还可以收到推送?如果大多设备都可以推送那运营商怎么办?
- qt 4.7 sqlserver2000 存储过程调用
- 关于ANDROID4.0.1编译问题!
- Android FrameBuffer读屏幕30秒后mmap失败
- 联通粗定位用java程序如何来请求和接受数据
- 为什么QT运行Android平台的程序时,mouseMoveEvent事件响应的间隔时间很长??????????
- android与PC蓝牙通讯
- 指定大小的label 内容可变,如果内容超出label的宽度,将未能显示的部分显示在另一个label上
- Android调试
- android如何通过wifi连接无线打印机
- 运行程序,release目录下产生一个乱码文件夹
- 分享个某机构最新安卓资料,自己验证了
- service启动不起来,掉不了service connection
- 求助:QT5.0 没有QPrinter吗