gpt4 book ai didi

ios - 推送后如何覆盖导航 Controller ?

转载 作者:行者123 更新时间:2023-11-29 00:54:07 25 4
gpt4 key购买 nike

我想用自己的后退按钮、标题等覆盖到我自己的导航 Controller 。但是在我按下 View Controller 之后,默认情况下显示堆栈中最后一个 View 的导航栏,这是在上一类中继承的。

让我们假设这是我的第一个继承头文件中的 NavBarViewController 的类;

//ListingDetailViewController.h
@interface ListingDetailViewController : NavBarViewController

并且,在 ListingDetailViewController 中,我通过以下方式推送 View :

//ListingDetailViewController.m
ChatListViewController *chatList= [[ChatListViewController alloc]init];
[self.navigationController pushViewController:chatList animated:YES];

所以这仍然会带来与 ListingDetailViewController 中相同的导航 Controller ,即使我试图覆盖后退按钮,在 ChatListViewController 的 viewdidLoad 和 viewWillAppear 中再次标题。这是 ChatListViewController 的 header :

//ChatListViewController.h
@interface ChatListViewController : IPChatListViewController

我怎样才能做到这一点?任何帮助深表感谢。谢谢。

最佳答案

我使用 BaseViewController 类来实现此目的。将此代码粘贴到您的基本 Controller 中:

if (self.navigationController.viewControllers)
{
if (self.navigationController.viewControllers.count > 1)
{
[self createBackButton];
}
else
{
//[self createSideBarButton];
}
}
else
{
//[self createSideBarButton];
}

将此方法包含在您的基类中:

- (UIBarButtonItem *)createBackButton
{

UIBarButtonItem *negativeSeperator = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
negativeSeperator.width = 0;
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"navigation_back_button.png"] style:UIBarButtonItemStylePlain target:self.navigationController action:@selector(popViewControllerAnimated:)];

[item setTintColor:[UIColor whiteColor]];
self.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:negativeSeperator,item, nil];
return item;
}

如果您确保从这个基本 VC 中子类化您的 View Controller (不是导航 Controller ),它将自动替换后退按钮。

关于ios - 推送后如何覆盖导航 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37791966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com