ios 导航页面

//  AppDelegate.m
#import "AppDelegate.h"
#import "ViewController.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    CGRect rect = [UIScreen mainScreen].bounds; //屏幕的大小
    UIWindow *w = [[UIWindow alloc]initWithFrame:rect];//新建一个页面  并且让新建的页面充满整个显示屏
    w.backgroundColor = [UIColor redColor]; //把新建的页面的颜色设为红色
    [w makeKeyAndVisible];//把设置的效果显示在页面上
    self.window = w;//使得开始设置的不要马上系统给销毁
    ViewController *v = [[ViewController alloc]init];//新建另一个页面
    UINavigationController *nav =[[UINavigationController alloc]initWithRootViewController:v];//初始画导航页面 并建立
    
    UIImage *image = [UIImage imageNamed:@"a"];//将要使用的图片赋值 并创建
    [nav.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];//将图片添加到导航页面中
    
    
    nav.view.backgroundColor = [UIColor colorWithRed:0 green:1 blue:0 alpha:1];//给导航页面设置背景颜色 并用的是三元色来表示
    v.view.backgroundColor = [UIColor orangeColor];//将页面的背景颜色设置为橘红色
    self.window.rootViewController = nav;//把创建好的导航页面在第一个页面上显示
   
    return YES;
}

//  ViewController.m

#import "ViewController.h"
#import "SecondViewController.h"

@interface ViewController ()

@end

@implementation ViewController

//视图加载完成后自动调用
- (void)viewDidLoad {
    [super viewDidLoad];
    
//    self.title = @"AAA";   //第一种方法 在导航页面显示标签
    self.navigationItem.title = @"AAA";//第二种方法 在导航页面显示标签
    
    //1.
    UIBarButtonItem *leftItem = [[UIBarButtonItem alloc] initWithTitle:@"Left" style:UIBarButtonItemStylePlain target:self action:@selector(didLeftClicked)];//
    
    //2.
    UIImage *img = [UIImage imageNamed:@"back"];//添加图片 并初始化
//    UIBarButtonItem *leftItem2 = [[UIBarButtonItem alloc] initWithImage:img style:UIBarButtonItemStyleDone target:self action:@selector(didLeftClicked)];//
    
    //3. 使用一个自定义的控件作为左边item
//    UIImageView *imgView = [[UIImageView alloc] initWithImage:img];//
    UIButton *leftBtn = [UIButton buttonWithType:UIButtonTypeCustom];//创建一个按钮
    [leftBtn setImage:img forState:UIControlStateNormal];//将图片加载在按钮上
    //只有大小有作用
    leftBtn.frame = CGRectMake(0, 0, 40, 40);//按钮的位置大小
    
    UIBarButtonItem *leftItem3 = [[UIBarButtonItem alloc] initWithCustomView:leftBtn];//
    //设置导航条左/右侧按钮
    self.navigationItem.rightBarButtonItems = @[leftItem3];//
    
    UIImageView *imgView = [[UIImageView alloc] initWithImage:img];//
    self.navigationItem.titleView = imgView;//
    
    //导航条分为3个部分
    //0. self.navigationController.navigationBar
    //1. self.navigationItem.leftBarButtonItem(s)
    //2. self.navigationItem.rightBarButtonItem(s)
    //3. self.navigationItem.title(View)
    
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];//创建一个按钮
    //设置不同状态的标题
    [btn setTitle:@"按钮" forState:UIControlStateNormal];//在常态的时候按钮显示为 “按钮”
    [btn setTitle:@"高亮" forState:UIControlStateHighlighted];//在点击按钮时 按钮显示为“高亮”
//    [btn setBackgroundColor:[UIColor redColor]];//第一种方法表示按钮的背景颜色为红色
    btn.backgroundColor = [UIColor redColor];//第二种方法表示 按钮的背景颜色为红色
    
    [btn addTarget:self action:@selector(didClicked) forControlEvents:UIControlEventTouchUpInside];//点击按钮将要执行的方法名还有执行的类型
    btn.frame = CGRectMake(0, 64, 100, 100);//设置位置和大小
    [self.view addSubview:btn];//显示按钮
}

- (void)didLeftClicked//按钮执行的方法
{
    NSLog(@"%s", __PRETTY_FUNCTION__);
}

- (void)didClicked//按钮执行的方法
{
    NSLog(@"%s", __func__);
    
    SecondViewController *viewCtrl = [[SecondViewController alloc] init];//
//    viewCtrl.view.backgroundColor = [UIColor orangeColor];//
//    [self presentViewController:viewCtrl animated:YES completion:nil];//NULL
    
    [self.navigationController pushViewController:viewCtrl animated:YES];//
    //所有被导航控制器管理的页面,都会拥有一个指针navigationController指向所在的导航控制器
    NSLog(@"2: %p", self.navigationController);//
}

@end

#import "SecondViewController.h"

@interface SecondViewController ()

@end

@implementation SecondViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.title = @"Second";//在第二个页面中的导航页面标题设置为这个
    
    self.view.backgroundColor = [UIColor purpleColor];//设置页面的背景颜色
    
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];//设置一个按钮
    [btn setTitle:@"第二个按钮" forState:UIControlStateNormal];//设置一个常规按钮 并命名为第二个按钮
    [btn addTarget:self action:@selector(didClicked:) forControlEvents:UIControlEventTouchUpInside];//这个按钮将执行自己的didclicked方法
    btn.frame = CGRectMake(100, 100, 200, 50);//设置按钮所在页面的位置
    [self.view addSubview:btn];//把设置的按钮加载在页面上
    
    NSLog(@"btn 1: %p", btn);
}

- (void)didClicked:(UIButton *)sender   //按钮需要执行的方法
{
    NSLog(@"%s", __func__);
    NSLog(@"btn 2: %p", sender);
    
    [self.navigationController popViewControllerAnimated:YES];//将要跳转到前一个页面
}

时间: 2024-10-18 04:42:41

ios 导航页面的相关文章

在uwp仿IOS的页面切换效果

有时候我们需要编写一些迎合IOS用户使用习惯的uwp应用,我在这里整理一下仿IOS页面切换效果的代码. 先分析IOS的页面切换.用户使用左右滑动方式进行前进和后退,播放类似于FlipView的切换动画.导航到新页面时,使用页面前进的动画. UWP自带很多切换效果,位于 Windows.UI.Xaml.Media.Animation 中.与苹果的切换效果最接近的是 PaneThemeTransition (而不是EdgeUIThemeTransition). PaneThemeTransition

iOS 自定义页面的切换动画与交互动画

在iOS7之前,开发者为了寻求自定义Navigation Controller的Push/Pop动画,只能受限于子类化一个UINavigationController,或是用自定义的动画去覆盖它.但是随着iOS7的到来,Apple针对开发者推出了新的工具,以更灵活地方式管理UIViewController切换. 自定义导航栏的Push/Pop动画 为了在基于UINavigationController下做自定义的动画切换,先建立一个简单的工程,这个工程的rootViewController是一个

关于ios导航控制器的知识总结

关于ios导航控制器的知识总结 添加了导航控制器后: 1.每个页面都会有一个顶部导航栏navigationbar和底部工具栏toolbar,它们是导航控制器navC的属性.且导航栏默认是不隐藏的,而底部工具栏默认是隐藏的. 2.可以通过设置 self.navigationController.toolbarHidden = NO来显示底部工具栏,工具栏中的内容可以通过viewController的toolbarItems来设置,显示的顺序和设置的NSArray中存放的顺序一致,其中每一个数据都一

百度地图导航算路成功但是无法进入导航页面

百度地图导航算路成功但是无法进入导航页面Warning: Attempt to present <UINavigationController: 0x163852800> on <UIViewCont 在导航页面.m中增加 -(id)naviPresentedViewController { return self; }

[转]IOS Segment页面之间view的切换

有三个view,分别为view1.view2.view3,通过UISegmentedControl进行三个view的切换. Ios代码   @interface UIViewDemoViewController : UIViewController { IBOutlet UIView *view1; IBOutlet UIView *view2; IBOutlet UIView *view3; } - (IBAction)switchViews:(id)sender; @end 在Interfa

阻止iOS中页面弹性回滚,只允许div.phone_body的区块有弹性

使用说明:只要替换选择器:var selector = '.phone_body'; /** * 阻止iOS中页面弹性回滚,只允许div.scroller的区块有弹性 */ (function () { var selector = '.phone_body'; var u = navigator.userAgent; if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {//安卓手机 //alert("安卓手机&quo

IOS下页面样式定义不能使用??

今天修改手机页面css时,定义的<input type="button" />样式不能显示~ 看下面的例子 wap页面: ios访问页面: 经过从网上各种查找资料,发现IOS系统默认的是原生态样式. 解决方法: 定义全局 input{ -webkit-appearance: none; } 样式就和wap页面一样了!! 使用html5日期ios <input type="datetime-local" class="datetime_lo

iOS 委托 页面之间传递数值

ios的页面传值方法很多,本博客主要是 通过委托模式 来传值. 将一个页面中时间选择器的值传递到另外一个页面 主要包括三个模块 第一:A类 第二:委托协议 第三:B类 首先定义个一委托UIViewPassValueDelegate用来传递值 @protocol ViewPassValueDelegate <NSObject> -(void) passValue :( NSString *) value; @end 在A类中声明 委托,并且实现这个委托 @property (nonatomic,

ios导航控制器UINavigationController,控制器a跳转(push)到b后,b跳转(push)到c,但c后退(pop)进入a

参考:StackOverflow ios导航控制器UINavigationController,控制器a跳转(push)到b后,b跳转(push)到c,但c后退(pop)进入a.在b跳转(push)到c中代码书写如下: UINavigationController *navController = [[self.navigationController retain] autorelease]; [navController popViewControllerAnimated:NO]; View