【问题标题】:Adding Button to Show Master View from Detail View添加按钮以从详细视图显示主视图
【发布时间】:2013-06-10 20:26:45
【问题描述】:

我正在尝试在详细视图的导航栏中添加一个按钮,以便在纵向模式下显示主视图,但该按钮未显示。任何人都可以提供帮助或提供建议吗?

这是我在详细视图中尝试的方法:

- (void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)pc
{
    mainMenu = barButtonItem;
    [mainMenu setTitle:@"Menu"];
    [[self navigationItem]setLeftBarButtonItem:mainMenu];
}

- (void)splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
    if (mainMenu == [[self navigationItem]leftBarButtonItem])
    {
        [[self navigationItem]setLeftBarButtonItem:nil];
    }
}

这是我在主视图中选择一行时加载详细视图的方式:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{ 
    NSMutableArray *details = [self.splitViewController.viewControllers mutableCopy];

    UINavigationController *detailNav = [[UINavigationController alloc]initWithRootViewController:webViewController];

    [details replaceObjectAtIndex:1 withObject:detailNav];

    self.splitViewController.viewControllers = details;

    KFBAppDelegate *appDelegate = (KFBAppDelegate *)[[UIApplication sharedApplication]delegate];
    appDelegate.window.rootViewController = self.splitViewController;

我已将此添加到 viewDidLoad 并且现在显示按钮,但我不确定如何让它显示主视图。

mainMenu = [[UIBarButtonItem alloc]init];
    [mainMenu setTitle:@"Menu"];
self.navigationItem.leftBarButtonItem = mainMenu;

这是我从左侧滑动以显示主视图时的样子。

我设法让一个左按钮出现,但现在我不知道如何让它打开主视图。这是我让按钮显示的方式:

mainMenu = [[UIBarButtonItem alloc]init];
    [mainMenu setTitle:@"Menu"];
self.navigationItem.leftBarButtonItem = mainMenu;

【问题讨论】:

  • 请看我编辑的答案。
  • 我已经有一个显示活动视图的右栏按钮
  • 另外,我从主从模板创建了这个项目,并没有真正改变太多的模板代码。在纵向时,我可以通过从屏幕左侧滑动来显示主视图。
  • 从您发布的图片看来,右边的按钮是您的分享按钮。我的假设是您通过 IB 放置该按钮。它涵盖了您通过代码创建的按钮。您的按钮正在创建中,但它隐藏在共享按钮下。您可能必须对按钮进行子类化并使用 CGRect 将其放置在您想要的位置。或者只是通过 IB 添加另一个按钮,并使用灵活的空格箭头将其放置在您想要的位置。然后通过 IBAction 声明动作并将其合并到肖像的自动旋转方法中。或者将您的分享按钮放在其他地方。
  • 右键以编程方式添加,而不是通过 IB。我正在尝试添加一个左栏按钮。我有一个左键可以显示,但我不知道如何让它打开主视图。

标签: ios master-detail uisplitview


【解决方案1】:

而不是左按钮,使用右栏按钮,它将显示。问题是左侧的按钮被导航控制器的默认按钮隐藏。试试右边的栏按钮。

编辑

这是一个通用方法,放置在视图中确实加载以包含右栏按钮。然后您可以访问其他方法。希望有帮助。

UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertNewObject:)];
self.navigationItem.rightBarButtonItem = addButton;
self.detailViewController = (DetailViewController *)[[self.splitViewController.viewControllers lastObject] topViewController];

在这里,在选择器中插入新对象是IBAction,您可以使用它来声明该按钮必须执行的操作。

【讨论】:

  • 你试过self.navigationItem.leftBarButtonItem = barButtonItem;这可能是问题
  • 我把这个放在我的 viewDidLoad 方法中:self.navigationItem.leftBarButtonItem = mainMenu;
  • 您可以或替换其中的方法将隐藏并显示并查看您是否可以调用按钮。
  • 我试过把 self.navigationItem.leftBarButtonItem = mainMenu;在 willHide 和 willShow 以及 viewDidLoad 中没有运气。
猜你喜欢
  • 2015-01-29
  • 1970-01-01
  • 1970-01-01
  • 2019-09-20
  • 2012-08-17
  • 1970-01-01
  • 2016-05-14
  • 1970-01-01
  • 2011-01-02
相关资源
最近更新 更多