1

我正在尝试在两个场景之间创建过渡,这是我在生产代码中的简化版本:

2 视图控制器

两者都是ViewController,左边的里面有一个 TableView,当点击它时,它应该转换到右边的场景,从点击的任何单元格传递数据。

目前,使用模态segue,我可以点击单元格并正确转换,但是,我不知道如何将后退按钮放置到导航栏上

我正在从单元格过渡到第二个视图控制器,如下所示:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    [self performSegueWithIdentifier:@"toSecond" sender:self];

}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{
    if ([segue.identifier isEqualToString:@"toSecond"])
    {
        NSLog(@"Preparing segue for toSecond, setting some data on target scene");

        NSIndexPath *path = [self.theTableView indexPathForSelectedRow];
        MyData * myData = [myDataArray objectAtIndex:path.row];

        // Obtain handles on the current and destination controllers
        FirstController * startingViewController;
        SecondController * destinationController;

        startingViewController = (FirstController * ) segue.sourceViewController;
        destinationController = (SecondController * ) segue.destinationViewController;

        destinationController.someData = myData;
    }
}

在 上SecondController,我尝试修改 viewDidLoad 方法以编程方式包含一个后退按钮项,如上一个 SO 问题中所建议的那样:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    UIBarButtonItem * back = [[UIBarButtonItem alloc] initWithTitle:@"Back" 
                                                              style:UIBarButtonItemStylePlain 
                                                             target:nil 
                                                             action:nil];

    [self.navigationItem setBackBarButtonItem:back];
}

所以我的问题是,我怎样才能在导航栏上获得后退按钮?像这样的东西:

所需的后退按钮

谢谢

4

4 回答 4

2

使用故事板的一种(简单)方法是将导航控制器嵌入到具有表格的视图中。确保正确的视图(带有表格的视图)突出显示,然后转到编辑器 > 嵌入 > 导航控制器。

当您单击表格的一行时,后退按钮将自动出现。就像 Dan 说的那样,确保它是图片中两个视图之间的推动 segue。

于 2012-06-14T20:36:51.383 回答
0

您将无法轻松地将后视按钮添加到模态呈现的 ViewController

如果您只想在栏的左侧添加一个普通按钮,请执行以下操作

    UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" 
style:UIBarButtonSystemItemDone target:nil action:nil];

    UINavigationItem *item = [[UINavigationItem alloc] initWithTitle:@"Title"];
    item.leftBarButtonItem = rightButton;
    item.hidesBackButton = YES;
    [self.yourNavigationBar pushNavigationItem:item animated:NO];

如果您坚持以模态方式呈现您的视图并且仍然想要后退按钮样式,您可以使用 Three20

于 2012-06-14T20:41:19.340 回答
0

代替您拥有带有表格的视图的位置,我们UINavigationController不要删除带有表格的视图,而只是代替您对其进行定位的位置,或者如果它是根控制器,请使用 nav con。使带有表格的视图成为导航控制器的根视图控制器,然后简单地使用推送转场而不是模态转场,您应该会自动获得后退按钮

于 2012-06-14T20:31:53.147 回答
0

最好的方法是只使用 aUINavigationController作为表视图控制器的父级,并使用 push segue 而不是模态 segue。

您可以通过设置栏的属性创建两个实例UINavigationItem并告诉它们。实例 0 代表表视图控制器。UINavigationBaritems

您可以UIButton使用 101 类型(未记录的后退按钮类型)创建一个,并将其包装在UIBarButtonItemusing 中initWithCustomView:

于 2012-06-14T20:36:27.047 回答