Push 到指定的页面和拦截跳转并且一次性设置导航栏的item的文字的颜色

-(void)pushNextVCByInstance:(UIViewController *) nextVC{

    

    nextVC.hidesBottomBarWhenPushed =YES;

    UIBarButtonItem *item = [[UIBarButtonItemalloc]initWithTitle:@"返回"style:UIBarButtonItemStylePlaintarget:nilaction:nil];

    self.navigationItem.backBarButtonItem = item;

    [self.navigationControllerpushViewController:nextVCanimated:NO];

}

// 设置整个项目所有item的主题样式

+ (void)initialize

{

   

  /** 设置 UINavigationBar 上边的文字和颜色的属性 */

   UINavigationBar * navcBar = [UINavigationBarappearance];

   // - 设置导航栏的标题的文字属性

    [navcBar setTitleTextAttributes:nil];



   /**设置整个项目所有item的主题样式 */

    UIBarButtonItem *item = [UIBarButtonItemappearance];

    

    // 设置普通状态

    // keyNS****AttributeName

    NSMutableDictionary *textAttrs = [NSMutableDictionarydictionary];

    textAttrs[NSForegroundColorAttributeName] = [UIColororangeColor];

    textAttrs[NSFontAttributeName] = [UIFontsystemFontOfSize:15];

    [item setTitleTextAttributes:textAttrsforState:UIControlStateNormal];

    

    // 设置不可用状态

    NSMutableDictionary *disableTextAttrs = [NSMutableDictionarydictionary];

    disableTextAttrs[NSForegroundColorAttributeName] = [UIColorcolorWithRed:0.6green:0.6blue:0.6alpha:0.7];

    disableTextAttrs[NSFontAttributeName] = textAttrs[NSFontAttributeName];

    [item setTitleTextAttributes:disableTextAttrsforState:UIControlStateDisabled];

}

/**

 *  重写这个方法目的:能够拦截所有push进来的控制器

 *

 *  @param viewController即将push进来的控制器

 */

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated

{

    if (self.viewControllers.count > 0) { // 这时push进来的控制器viewController,不是第一个子控制器(不是根控制器)

        /* 自动显示和隐藏tabbar */

        viewController.hidesBottomBarWhenPushed =YES;

        

        /* 设置导航栏上面的内容 */

        // 设置左边的返回按钮

        viewController.navigationItem.leftBarButtonItem = [UIBarButtonItemitemWithTarget:selfaction:@selector(back)image:@"navigationbar_back"highImage:@"navigationbar_back_highlighted"];

        

        // 设置右边的更多按钮

        viewController.navigationItem.rightBarButtonItem = [UIBarButtonItemitemWithTarget:selfaction:@selector(more)image:@"navigationbar_more"highImage:@"navigationbar_more_highlighted"];

    }


// 后写下边这句话的目的是希望当在控制器中对导航栏的按钮进行修改时候可以有效 否则如果写在前边,就会出现的问题是在控制器里边在设置的导航栏的按钮设置无效....

    [super pushViewController:viewControlleranimated:animated];

}


- (void)back

{

#warning 这里要用self,不是self.navigationController

    // 因为self本来就是一个导航控制器,self.navigationController这里是nil

    [selfpopViewControllerAnimated:YES];

}


- (void)more

{

    [selfpopToRootViewControllerAnimated:YES];

}



// 设置右边的按钮不可用状态

self.navigationItem.rightBarButtonItem.enabled =NO;


//修改特殊页面的导航栏按钮.....

- (void)viewDidLoad

{

    [superviewDidLoad];

    

    self.navigationItem.rightBarButtonItem = [[UIBarButtonItemalloc]initWithTitle:@"设置"style:0target:selfaction:@selector(setting)];

    // - 设置导航栏的标题的文字属性

    [self.navigationController.navigationBar setTitleTextAttributes:nil];

}




要在VuePress中设置404和500错误页面跳转指定页面,可以通过配置 `.vuepress/config.js` 文件来实现。 首先,需要在 `.vuepress/public` 目录下创建自定义的 404.html 和 500.html 错误页面。 然后,在 `.vuepress/config.js` 中添加以下配置: ```js module.exports = { // ... // 自定义404和500页面 configureWebpack: { resolve: { alias: { '@404': '/404.html', '@500': '/500.html' } } }, extend: '@vuepress/theme-default', themeConfig: { // ... }, // 自定义错误页面路由 plugins: [ [ '@vuepress/plugin-register-components', { components: [ { name: '404Page', path: '@404' }, { name: '500Page', path: '@500' } ] } ] ] } ``` 其中,`@404` 和 `@500` 分别是自定义的 404 和 500 页面的别名,`@` 表示 `.vuepress/public` 目录。 接着,在 `.vuepress/theme/index.js` 中添加以下代码: ```js export default { // ... async enhanceApp({ app }) { // 注册全局路由守卫,用于处理404和500页面跳转 app.router.beforeEach((to, from, next) => { if (to.matched.length === 0) { next({ name: '404Page' }); } else if (to.matched.some(record => record.meta && record.meta.status === 500)) { next({ name: '500Page' }); } else { next(); } }); } } ``` 这段代码注册了全局路由守卫,并在路由跳转时判断路由是否匹配成功,如果没有匹配成功则跳转到 404 页面,如果匹配成功但状态码为 500 则跳转到 500 页面。 最后,在需要跳转到 404 或 500 页面的地方,可以使用路由跳转的方式来实现: ```js this.$router.push({ name: '404Page' }); // 跳转到 404 页面 this.$router.push({ name: '500Page' }); // 跳转到 500 页面 ``` 这样就完成了在 VuePress 中设置 404 和 500 页面跳转指定页面的配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值