我希望导航栏有一个返回到最后一页的后退按钮,即使最后一页没有导航栏。如何插入后退按钮,并控制用户按下后会发生什么?
答案 0 :(得分:1)
我想添加一个答案,但是不幸的是,我在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)
然后,定义一个函数(用于上面按钮操作的选择器):
@objc func goBack() {
self.performSegue(withIdentifier: "myUnwindSegue", sender: AnyObject.self)
}
请注意,这里我使用了轻松的序列。要使用轻松的搜索,请参阅here或如有任何疑问,请在下面评论。初次使用segue时可能会有些棘手,但之后它们很棒。还要注意,当您说“最后一页”时,我假设您是说一个视图已经添加到视图层次结构中。
答案 1 :(得分:0)
您需要将Interface Builder中的按钮链接到单击按钮时要调用的方法。该方法应如下- (IBAction)backAction
。方法的名称取决于您,但您必须将返回类型声明为IBAction,以便“接口”构建器知道可以将按钮链接到它。
答案 2 :(得分:0)
导航控制器无需导航栏即可由导航控制器管理。而不是试图伪造后退按钮,使用导航控制器来管理两个视图控制器,并让第一个控制器隐藏导航栏。例如,您可以添加以下内容:
[self.navigationController setNavigationBarHidden:YES animated:YES];
到控制器的-viewDidAppear方法。为第二个控制器做类似的事情,为隐藏参数传递NO,以便再次显示它。
在一般情况下,视图控制器可以使用这样的代码向导航栏添加一个后退按钮(警告:从内存中输入未经测试的代码,但应该让你开始):
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:myBackImage style: UIBarButtonItemStylePlain target:self action:someAction];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];
点击按钮时,该按钮会将其动作(someAction)发送到目标(自我)。
答案 3 :(得分:-2)
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];