将目标添加到navigationBar中的库存后退按钮
我在UINavigationBar
设置标题和后退按钮的值,如下所示:
self.navigationItem.title = @"Post"; [self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName : [[UIColor blueColor] colorWithAlphaComponent:0.75f], NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue" size:20]}]; [self.navigationController.navigationBar.backItem setTitle:@"Pop Pop !"];
但是我无法在后退按钮上添加目标。 我尝试过以下方法:
[self.navigationItem.backBarButtonItem setTarget:self]; [self.navigationItem.backBarButtonItem setAction:@selector(goBack:)];
和
self.navigationItem.backBarButtonItem.target = self; self.navigationItem.backBarButtonItem.action = @selector(goBack:);
但是弹出viewController时没有调用我的选择器。
如何将目标添加到backButton,或者在弹出viewController时调用选择器? (我已经尝试了SO中提到的所有可能的解决方案,徒劳无功)
编辑:我宁愿编辑股票backButton的行为,而不是设置自定义按钮作为backButton。
我有两个解决方案,您无法在后退按钮中添加目标或操作:
1-添加一个新的barButtonItem并将其调用,然后将选择器添加到它,并将其放在navigationItem.leftBarButtonItem中。 不要忘记流行!
2-覆盖viewWillDisAppear方法,并做你想做的任何事情..如果你的viewcontroller没有引导你到另一个viewcontroller但前一个…
如果您还有其他问题,请询问(Y)
你不能将目标添加到股票BackButton,但你可以覆盖CustomNavigationController中的UINavigationBarDelegate方法,如下所示:
class CustomNavigationController: UINavigationController { @IBOutlet weak var ibNavigationBar: UINavigationBar! override func viewDidLoad() { super.viewDidLoad() ibNavigationBar.delegate = self } } extension CustomNavigationController: UINavigationBarDelegate { func navigationBar(navigationBar: UINavigationBar, shouldPopItem item: UINavigationItem) -> Bool { for viewController in viewControllers { if viewController.title == "YourTitledViewController" { popToViewController(viewController, animated: true) } } return false } }
您无法以这种方式更改backBarButtonItem
操作。
我在这看到2个可能的解决方案
-
要实现自定义后退按钮,请执行任何操作
-
这里有一个很好的解决方案,如何覆盖标准回事件并在需要时阻止
popViewController
https://github.com/onegray/UIViewController-BackButtonHandler/tree/master
哟无法添加目标到后退按钮。 您可以向其添加leftbarbutton项和addtarget。
UIBarButtonItem *tmpButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(backAction:)]; self.navigationItem.leftBarButtonItem = tmpButtonItem;
首先隐藏后退按钮
self.navigationItem.hidesBackButton = YES;
然后你制作自定义按钮
UIButton *leftbarButton = [UIButton buttonWithType:UIButtonTypeCustom]; leftbarButton.frame =CGRectMake(70, 3, 65, 32); [leftbarButton setBackgroundImage:[UIImage imageNamed:@""] forState:UIControlStateNormal]; [leftbarButton addTarget:self action:@selector(leftbarbuttonclick) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *newdbutton =[[UIBarButtonItem alloc] leftbarButton];
并将其添加到导航左栏按钮项目
self.navigationItem.leftBarButtonItem =newbutton;
现在添加操作
-(void)leftbarbuttonclick { // Your code }
脱离我的头顶。 尝试这样的事情
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(goBack:)]; tap.numberOfTapsRequired = 1; [self.navigationItem.backBarButtonItem addGestureRecognizer:tap];
- – (void)finishedWithAuth:(GTMOAuth2Authentication *)auth error:(NSError *)error – Method is not call
- 如何在使用AVAudioPlayer框架完成播放后再次播放相同的声音?
- PHAsset + AFNetworking。 无法将file upload到真实设备上的服务器
- Firebase – 删除并重新安装应用程序不会取消对用户的身份validation
- ExtAudioFileWrite m4a / aac在双核设备(ipad 2,iphone 4s)上失败
- iOS TableView崩溃加载不同的数据
- IOS – 从Parse.com后端下载图片
- 下载AppValley
- 如何增加或减lessSwift中button的大小?