首页 > 其他分享 >无涯教程-OC - Navigation Bar函数

无涯教程-OC - Navigation Bar函数

时间:2023-10-06 18:32:11浏览次数:48  
标签:navButton Bar ViewController self OC 无涯 步骤 导航 控制器

导航栏包含导航控制器的导航按钮,导航控制器是可被按下和弹出的视图控制器的堆栈。导航栏上的标题是当前视图控制器的标题。

Navigation Bar - 示例代码

步骤1 - 创建基于视图的应用程序。

步骤2 - 现在,选择App Delegate.h 并为导航控制器添加一个属性,如下所示-

#import <UIKit/UIKit.h>

@class ViewController;

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@property (strong, nonatomic) ViewController *viewController;

@property (strong, nonatomic) UINavigationController *navController;

@end

步骤3 - 现在,更新 AppDelegate.m 文件中的 application:didFinishLaunchingWithOptions:方法,以分配导航控制器并使之成为窗口的根视图控制器如下-

- (BOOL)application:(UIApplication *)application 
   didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
   self.window = [[UIWindow alloc] initWithFrame:
   [[UIScreen mainScreen] bounds]];
   
   //Override point for customization after application launch.
   self.viewController = [[ViewController alloc] 
   initWithNibName:@"ViewController" bundle:nil];
   
   //以 ViewController 为根的导航控制器初始化
   UINavigationController *navController = [[UINavigationController alloc]
   initWithRootViewController:self.viewController];
   self.window.rootViewController = navController;
   [self.window makeKeyAndVisible];
   return YES;
}

步骤4 - 通过选择File→New→File...添加新的类文件 TempViewController 。 →目标C类,然后将该类命名为带有子类UIViewController的TempViewController。

步骤5 - 在 ViewController.h 中添加UIButton navButon 如下-

//ViewController.h
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController {
   UIButton *navButton;
}
@end

步骤6 - 添加方法 addNavigationBarItem 并在 viewDidLoad 中调用该方法。

步骤7 - 创建导航项操作的方法。

步骤8 - 无涯教程还需要创建另一个方法来推送另一个视图控制器TempViewController。

步骤9 - 更新的 ViewController.m 如下-

//ViewController.m
#import "ViewController.h"
#import "TempViewController.h"
@interface ViewController ()

@end
@implementation ViewController

- (void)viewDidLoad {
   [super viewDidLoad];
   [self addNavigationBarButton];
   //Do any additional setup after loading the view, typically from a nib
}

- (void)didReceiveMemoryWarning {
   [super didReceiveMemoryWarning];
   //处置任何可以重新创建的资源。
}

-(IBAction)pushNewView:(id)sender {
   TempViewController *tempVC =[[TempViewController alloc]
   initWithNibName:@"TempViewController" bundle:nil];
   [self.navigationController pushViewController:tempVC animated:YES];
}

-(IBAction)myButtonClicked:(id)sender {
   //切换 navButton 的隐藏状态
   [navButton setHidden:!nav.hidden];
}

-(void)addNavigationBarButton {
   UIBarButtonItem *myNavBtn = [[UIBarButtonItem alloc] initWithTitle:
   @"MyButton" style:UIBarButtonItemStyleBordered target:
   self action:@selector(myButtonClicked:)];
   
   [self.navigationController.navigationBar setBarStyle:UIBarStyleBlack];
   [self.navigationItem setRightBarButtonItem:myNavBtn];
   
   //创建一个最初隐藏的导航按钮
   navButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
   [navButton setFrame:CGRectMake(60, 50, 200, 40)];
   [navButton setTitle:@"Push Navigation" forState:UIControlStateNormal];
   [navButton addTarget:self action:@selector(pushNewView:) 
   forControlEvents:UIControlEventTouchUpInside];
   [self.view addSubview:navButton];
   [navButton setHidden:YES];
}
@end

步骤10 - 运行应用程序时,将获得以下输出-

iOS Tutorial

步骤11 - 单击导航按钮MyButton时,将切换导航按钮的可见性。

步骤12 - 单击导航按钮时,将按下另一个视图控制器。

iOS Tutorial

参考链接

https://www.learnfk.com/ios/ios-ui-elements-navigation-bar.html

标签:navButton,Bar,ViewController,self,OC,无涯,步骤,导航,控制器
From: https://blog.51cto.com/u_14033984/7726760

相关文章

  • WIN11 安装 SQL Server 2019,SQLSERVER2022, MYSQL 8.0 ,Docker,Mongodb失败故障分析
    最近研究数据库性能调优遇到各种数据库各种装不上,不知道熬了多少根软白沙,熬了多少颗张三疯,问了多少AI,查了多少网页,熬了两天,终于搞明白了一件事:那就是WIN11ONARM(因为拿的是MACPROM2做.NET平台开发安装)SQLSERVER2019,SQLSERVER2022,MYSQL8.0,Docker,Mongodb失败故障分析,最终极......
  • Python使用socket的UDP协议实现FTP文件服务
    简介本示例主要是用Python的socket,使用UDP协议实现一个FTP服务端、FTP客户端,用来实现文件的传输。在公司内网下,可以不适用U盘的情况下,纯粹使用网络,来实现文件服务器的搭建,进而实现文件的网络传输。同时用来理解Python的socket使用。服务端运行起来后,会把服务器上面的指......
  • docker笔记
    假设容器id为3a9ac4d50f7d开机时启动dockersudosystemctlstartdocker查看docker情况systemctlstatusdocker重启daemonsystemctldaemon-reload容器配置存放路径/var/lib/docker/containers/https://blog.csdn.net/sosous/article/details/122758984dockerstart容......
  • sv的LSB 使用+SV的protect类型+RAL模型的lock原因+C语言结构体中的冒号用法+uvm版本在
    sv的LSB使用https://blog.csdn.net/gsjthxy/article/details/90722378等价关系[LSB+:STEP]=[LSB+STEP:LSB]伪代码:bit[1023:0]mem;bit[7:0]data;j=0..100mem[j*8+:8]=data;//[7:0],[15:8],[23:16]SV的protect类型https://blog.csdn.net/qq_37573794/ar......
  • socket编程零碎知识点
    1.socket常用类型流格式套接字流格式套接字(StreamSockets)也叫“面向连接的套接字”,在代码中使用SOCK_STREAM表示。数据报格式套接字数据报格式套接字(DatagramSockets)也叫“无连接的套接字”,在代码中使用SOCK_DGRAM表示。2.目前学习常用链接http://c.biancheng.net/vi......
  • git config --global core.autocrlf input
    我们一般希望远程仓库中的代码为LF,就用: gitconfig--globalcore.autocrlfinput 就ok了。 gitconfig--globalcore.autocrlfinput这是一个Git的配置命令,它的作用是告诉Git在检出代码时不要自动将行尾转换为CRLF(Windows风格的换行符),而是保留原来的LF(Unix风格的换行符)。......
  • ESP32BOX的bin文件,docs文件夹,SDK作用介绍,以及了解从上电到app_main中间做了什么
    ESP32-BOX的GitHub链接(1)ESP32-BOX的GitHub链接factory_demo产生的bin文件作用(1)<1>bootloader.bin:引导加载程序映像由与应用程序映像相同的结构组成,用于决定是进入OTA升级还是进入正常程序。这个已经包含了应用代码以及底层代码。<2>factory_demo.bin:这个应该就是factory_demo程序......
  • 【AI测试】已落地-python文字图像识别PaddleOCR
    python文字图像识别PaddleOCRPaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力开发者训练出更好的模型,并应用落地。国产之光,百度开源的paddleocr开源地址:https://github.com/PaddlePaddle/PaddleOCR官方电子书:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7......
  • 【HTML专栏3】!DOCTYPE、lang、字符集的作用
    本文属于HTML/CSS专栏文章,适合WEB前端开发入门学习,详细介绍HTML/CSS如果使用,如果对你有所帮助请一键三连支持,对博主系列文章感兴趣点击下方专栏了解详细。博客主页:DuckBro博客主页系列专栏:HTML/CSS专栏关注博主,后期持续更新系列文章如果有错误感谢大家批评指出,一定及时修改感谢......
  • docker-compose deploy 高可用 elasticsearch TLS
    文章目录1.sysctl2.swap3.hosts4.配置instances.yaml5.创建证书6.部署7.修改kibanna密码8.清理1.sysctl[root@githubes_tls]#cat/etc/sysctl.conf#sysctlsettingsaredefinedthroughfilesin#/usr/lib/sysctl.d/,/run/sysctl.d/,and/etc/sysctl.d/.##......