iOS-如何在 UISplitViewController 详细视图上方添加按钮

Posted

技术标签:

【中文标题】iOS-如何在 UISplitViewController 详细视图上方添加按钮【英文标题】:iOS- How to add buttons above UISplitViewController Detail View 【发布时间】:2014-10-13 07:23:01 【问题描述】:

我正在使用 UISplitViewController,左侧显示菜单,右侧显示详细视图。

我希望能够在详细视图上方添加按钮(屏幕右侧的 3 个按钮),如下图所示:

--已编辑--

所以我的问题是:

    如何在详细视图上方添加按钮,如上图? 点击按钮时,如何显示允许用户输入信息的新屏幕。

【问题讨论】:

点击按钮时使用 [self presentViewController: animated: completion:] 方法来呈现一个不同的viewconroller。 对不起,也许我不清楚。如何在详细视图控制器上方添加这些按钮? 【参考方案1】:

1.最好的方法是使用detailViewControllernavigationBar并添加UIBarButtonItems

是这样的:

在您的DetailViewControllerviewDidLoadviewDidAppear 中添加三个barButtonItems

由于您的图像包含按钮的图像,因此下面的代码用于创建带有图像的barButtonItem

UIBarButtonItem *button1 = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"1st button image"] style:UIBarButtonItemStylePlain target:self action:@selector(yourActionMethod)];
UIBarButtonItem *button2 =  [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"2nd button image"] style:UIBarButtonItemStylePlain target:self action:@selector(yourActionMethod)];
UIBarButtonItem *button3 =  [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"3rd button image"] style:UIBarButtonItemStylePlain target:self action:@selector(yourActionMethod)];

然后我们将按钮添加到我们的DetailViewControllernavigationItem 喜欢:

self.navigationItem.rightBarButtonItems = @[button1,button2,button3];

2.现在当点击按钮时,action:@Selector(yourActionMethod) 会被调用,从那里我们可以显示新屏幕。

让我们深入研究代码吧。 . .

要显示新屏幕,我们可以使用splitViewController's:

- (void)showDetailViewController:(UIViewController *)vc sender:(nullable id)sender NS_AVAILABLE_ios(8_0);

我们的函数/方法块将如下所示

-(void)yourActionMethod

UIViewController * yourNewViewController =  //load your view controller here 

[self showDetailViewController:yourNewViewController sender:self];


【讨论】:

【参考方案2】:

您可以简单地创建 UIBarButton 并添加在当前 splitVC 上显示其他 VC 的功能,就像您使用导航栏一样。

UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithTitle:@"delete" style:UIBarButtonItemStylePlain target:self action:@selector(youfunction1)];
UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithTitle:@"delete" style:UIBarButtonItemStylePlain target:self action:@selector(youfunction2)];
UIBarButtonItem *item3 = [[UIBarButtonItem alloc] initWithTitle:@"delete" style:UIBarButtonItemStylePlain target:self action:@selector(youfunction3)];

self.navigationController.navigationItem.rightBarButtonItems = @[item1,item2,item3];

【讨论】:

【参考方案3】:

您可以直接在 UIViewController 故事板文件上添加按钮并将那里的事件连接到控制器。如果您想打开新屏幕以添加记录,那么您可以创建一个控制器并从那里展示它。

*

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self action:@selector(aMethod:)forControlEvents:UIControlEventTouchUpInside];
[button setTitle:@"Show View" forState:UIControlStateNormal];
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
[view addSubview:button];

*

aMethod 将被调用,你可以在这里创建你的控制器对象并展示它。

【讨论】:

嗨。我没有使用故事板。我以编程方式创建了 UISplitViewController 您好 [view addSubview:button] 中的视图是什么?我应该将按钮添加到 UISplitViewController barButtonItem 吗? View 是您的控制器视图。UISplitViewController 有两个 .viewControllers 所以将此行添加到第二个控制器 viewDidLoad

以上是关于iOS-如何在 UISplitViewController 详细视图上方添加按钮的主要内容,如果未能解决你的问题,请参考以下文章

UISplitViewController 和单元格取消选择

UISplitViewController 可以成为 UITabViewController 中的选项卡吗?

如何在 ios 7 和 ios6 中显示启动画面

iOS - 如何在 iOS 10 中集成推送通知?

如何在MvvmCross中呈现iOS模态视图

ios如何在iOS中实现SocketIO