Iphone 如何添加';背面';手动将按钮连接到UINavigationBar?
我希望导航栏有一个返回按钮,可以转到最后一页,即使最后一页没有导航栏。如何插入后退按钮,并控制用户按下按钮时发生的情况?您需要将Interface Builder中的按钮链接到单击按钮时要调用的方法。该方法应如下所示Iphone 如何添加';背面';手动将按钮连接到UINavigationBar?,iphone,objective-c,xcode,uinavigationbar,Iphone,Objective C,Xcode,Uinavigationbar,我希望导航栏有一个返回按钮,可以转到最后一页,即使最后一页没有导航栏。如何插入后退按钮,并控制用户按下按钮时发生的情况?您需要将Interface Builder中的按钮链接到单击按钮时要调用的方法。该方法应如下所示-(iAction)backAction。方法的名称由您决定,但您必须向iAction声明返回类型,以便Interface builder知道按钮可以链接到它。导航控制器管理视图控制器不需要导航栏。使用导航控制器来管理两个视图控制器,并让第一个控制器隐藏导航栏,而不是试图伪造“后退”
-(iAction)backAction
。方法的名称由您决定,但您必须向iAction声明返回类型,以便Interface builder知道按钮可以链接到它。导航控制器管理视图控制器不需要导航栏。使用导航控制器来管理两个视图控制器,并让第一个控制器隐藏导航栏,而不是试图伪造“后退”按钮。例如,您可以添加以下内容:
[self.navigationController setNavigationBarHidden:YES animated:YES];
到控制器的-viewdide方法。对第二个控制器执行类似操作,为隐藏参数传递NO,以便再次显示它
不过,在一般情况下,视图控制器可以向导航栏添加一个后退按钮,代码如下(警告:未测试的代码是从内存键入的,但应该可以开始):
点击按钮时,按钮会将其操作(someAction)发送到目标(self)。我想添加一个答案,但不幸的是,我只有Swift中的正确答案。我将在这里提供给任何人谁来到这个问题的答案寻找在Swift。假设您想在导航栏中添加一个“后退按钮”以转到最后一页。请执行以下操作:
let button = UIBarButtonItem.init()
button.title = "BACK"
let attributes : [NSAttributedStringKey : Any] = [NSAttributedStringKey(rawValue: NSAttributedStringKey.font.rawValue): UIFont.systemFont(ofSize: 15.0)]
button.setTitleTextAttributes(attributes, for: .normal)
button.target = self
button.action = #selector(self.goBack)
self.navigationItem.setLeftBarButton(button, animated: false)
然后,定义一个函数(用于上述按钮操作的选择器):
请注意,这里我使用了一个展开序列。如果您有任何疑问,请参阅或评论下面的“展开”部分。当你第一次使用它们的时候,放松的环节可能会很棘手,但之后它们就很棒了。还要注意,当你说“最后一页”时,我假设你指的是已经添加到视图层次结构中的视图。取决于你所说的“最后一页”是什么意思。我想他指的是上一页。但这两个视图都在同一个视图控制器中。你知道框架的使用方式不是这样的,对吗?如果你想在应用程序的设计上朝着自己的方向发展,这取决于你——我向你展示了如何在导航项中设置自己的按钮,不管怎样,这都应该起作用。但Cocoa Touch强烈期望每个视图控制器管理一个“屏幕”。除非有重要的理由不这样做,否则无视这个惯例就是让自己陷入一个不必要的痛苦世界。@Caleb-这只是给阅读本文的人的一个提示,这不再是惯例了
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:self action:@selector(back:) forControlEvents:UIControlEventTouchUpInside];
[button.titleLabel setFont:[UIFont boldSystemFontOfSize:11.0]];
[button setBackgroundImage:[UIImage imageNamed:@"back_norm.png"] forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"back_click.png"] forState:UIControlStateSelected];
[button setBackgroundImage:[UIImage imageNamed:@"back_click.png"] forState:UIControlStateHighlighted];
[button setTitle:@" Back" forState:UIControlStateNormal];
[button setTitle:@" Back" forState:UIControlStateSelected];
[button setTitle:@" Back" forState:UIControlStateHighlighted];
button.frame = CGRectMake(0, 0, 48, 30);
UIBarButtonItem *back = [[UIBarButtonItem alloc] initWithCustomView:button];
self.navigationItem.leftBarButtonItem = back;
[button release];
[back release];
let button = UIBarButtonItem.init()
button.title = "BACK"
let attributes : [NSAttributedStringKey : Any] = [NSAttributedStringKey(rawValue: NSAttributedStringKey.font.rawValue): UIFont.systemFont(ofSize: 15.0)]
button.setTitleTextAttributes(attributes, for: .normal)
button.target = self
button.action = #selector(self.goBack)
self.navigationItem.setLeftBarButton(button, animated: false)
@objc func goBack() {
self.performSegue(withIdentifier: "myUnwindSegue", sender: AnyObject.self)
}