Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何添加';背面';手动将按钮连接到UINavigationBar?_Iphone_Objective C_Xcode_Uinavigationbar - Fatal编程技术网

Iphone 如何添加';背面';手动将按钮连接到UINavigationBar?

Iphone 如何添加';背面';手动将按钮连接到UINavigationBar?,iphone,objective-c,xcode,uinavigationbar,Iphone,Objective C,Xcode,Uinavigationbar,我希望导航栏有一个返回按钮,可以转到最后一页,即使最后一页没有导航栏。如何插入后退按钮,并控制用户按下按钮时发生的情况?您需要将Interface Builder中的按钮链接到单击按钮时要调用的方法。该方法应如下所示-(iAction)backAction。方法的名称由您决定,但您必须向iAction声明返回类型,以便Interface builder知道按钮可以链接到它。导航控制器管理视图控制器不需要导航栏。使用导航控制器来管理两个视图控制器,并让第一个控制器隐藏导航栏,而不是试图伪造“后退”

我希望导航栏有一个返回按钮,可以转到最后一页,即使最后一页没有导航栏。如何插入后退按钮,并控制用户按下按钮时发生的情况?

您需要将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) 
}