- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有动态 tableview
,我有 6 个单元格。
现在,我想显示一个弹出框,它应该恰好出现在所选单元格的右侧,并且箭头指向左侧的单元格。
1) 创建了 PopUpViewController.m/.h
.
2) 创建了一个从单元格到这个 popUpViewController 的“Present as popover”segue。
3) 当前 Storyboard 中的 anchor 设置为 tableview
,因此弹出窗口从左上角显示。
经过一番阅读,
1) 我为单元格创建了一个 XTableViewCell.m/.h
类。
2) 在单元格的右端创建一个小按钮,并将它的导出放在 XTableViewCell.h
文件中,以将此按钮用作 anchor 。
我的问题是,我已经在 Storyboard 中完成了所有这些工作。
将我的 tableViewController
类视为 YTableViewController.h/.m
1) 我应该在哪里以及如何使用 anchor 按钮将我的弹出框锚定到我的要求?
2) 默认情况下, Storyboard中的 anchor 设置为单元格名称。它会被覆盖到我的按钮吗?
3) 我应该在哪里配置 UIPopoverPresentationController
参数?
4) 如何在 iPhone 中也将弹出窗口显示为“弹出窗口”而不是全屏 View Controller ?
请帮忙。
最佳答案
首先,您应该从您的 View Controller 创建一个带有 TableView 的 popover segue。您可以通过控制从文档大纲中的黄色 View Controller 图标拖动到要弹出的 View Controller 来完成此操作。通过单击 segue 并打开属性检查器并将其添加到 segue 标识符字段,为其提供一个 segue 标识符。 “Popover”之类的东西现在可以使用。
接下来,您应该从 segue 标识符字段下方的 anchor View 圆圈拖动到 View Controller 的 View (我们稍后会在代码中对此进行调整)。
您应该向您的 UITableViewCell
子类添加一个按钮。然后在您的 cellForRowAtIndexPath:
中,您可以为按钮添加一个目标,例如:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *cellIdentifier = [menuItems objectAtIndex:indexPath.row]; // I'm not sure what's going on here but hopefully you do
RegisterTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
[cell.PopoverAnchorButton addTarget:self action:@selector(presentPopover:) forControlEvents:UIControlEventTouchUpInside];
// Configure the cell...
return cell;
}
将 presentPopover:
方法添加到您的 View Controller :
- (void) presentPopover:(UIButton *)sender
{
[self performSegueWithIdentifier:@"Popover" sender:sender];
}
现在,您可以在 View Controller 的 prepareForSegue:
您可以获得对 UIPopoverPresentationController
的引用并检查源 View 是否是您的 UITableViewCell
子类的实例。如果是这样,将源 View 调整到它的按钮。
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"Popover"] && segue.destinationViewController.popoverPresentationController) {
UIPopoverPresentationController *popController = segue.destinationViewController.popoverPresentationController;
popController.sourceView = sender;
popController.delegate = self;
// if you need to pass data you can access the index path for the cell the button was pressed by saying the following
CGPoint location = [self.tableView convertPoint:sender.bounds.origin fromView:sender];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:location];
// do something with the indexPath
}
}
如果您希望 View Controller 始终显示为弹出窗口,即使在实现 UIPopoverPresentationControllerDelegate
方法时也是如此:
- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller{
return UIModalPresentationStyleNone;
}
此时,您可能会收到警告。这可以通过告诉编译器您符合 UIPopoverPresentationControllerDelegate
协议(protocol)来消除。例如:
@interface MyTableViewController () <UITableViewDataSource, UITableViewDelegate,UIPopoverPresentationControllerDelegate>
关于ios - 来自 UITableviewcell 的弹出窗口不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37617452/
我连续有 11 个图像,如果鼠标悬停在其中一个图像上,我希望弹出一个弹出窗口。所以每 11 个图像都有不同的弹出窗口。我已经有一些代码可以执行此操作,但它仅适用于第一张图像。 代码:index.htm
是否可以从 NSColorWell 制作一个 NSColorPanel“弹出”,几乎像一个弹出菜单? 我不喜欢它作为调色板的实现方式,因为有时它与哪个 NSColorWell 关联并不明显。 谢谢!
我正在考虑一个想法,基本上我想要一个带有 NSPopoverController 的 NSStatusItem 。我读到了人们遇到的所有问题,但我只是想尝试一下。现在有干净的方法吗?我见过的所有版本都
如何获取 JS 打开的弹出窗口的 url。这是我的代码: var _url = 'someurlhere'; var popupwindow = window.open(_url, "Popu
我正在设计一个网页,我希望当用户单击链接时,弹出窗口(新窗口)将打开一个链接网页。我的代码如下所示 function win(add,w,h) { window.open(add,"","widt
我正在寻找 C 中的简单堆栈实现,并找到了类似的东西: void pop(struct stack **top) { struct stack *temp; temp = malloc(s
我正在尝试使用 paypal 实现登录,我有 2 个不同的主机域 1- www.example.com 2- www.example.de 对于 paypal,我需要为此目的选择一个返回 URL,我选
我正在尝试找出如何复制此处显示的“弹出式” View 动画:https://imgur.com/a/irFqdiP .我正在使用当前代码来显示我的 viewController,但目前只有一个淡入淡出
有谁知道在 Windows 2000 或更高版本上以编程方式关闭 CD 托盘的方法?打开 CD 托盘存在,但我似乎无法关闭它,尤其是在 W2k 下。 如果可能的话,我特别想从批处理文件中寻找一种方法来
当您访问http://www.daniweb.com时你得到一个弹出窗口,这叫什么 + 知道怎么做吗? 感谢您的回复,只有模态加载动画的最简单方法是什么,即页面加载时动画显示以及动画何时完成? ASP
我正在为 Unity 引擎中的音频过滤器创建一个 C# 脚本。 我的问题是,在通过我的过滤器运行后,生成的音频具有一致且频繁的“咔哒声”、“砰砰声”或“跳过声”。听起来有点像旧 radio 。 我不确
我必须隐藏浏览器的地址栏。我正在使用这段代码: var winFeature = 'location=no,toolbar=no,menubar=no,scrollbars=yes,r
推荐一个button 弹起pickerview的源码,也可以作为工具类使用。 利用inputview 做键盘弹起动画。该如何做呢? 1.继承uiview 2.重写属性&方法
我在这里有一个问题,我已经工作了几个小时。 我正在导入一个 Excel 文件,并使用此代码来执行此操作: Dim objExcel As Excel.Application Di
我基本上是从 UITableViewController 推送 UIView,它包含的只是 UIWebView。但是,当我删除 UIView 以返回到 UITableView 时,应用程序崩溃了。 -
我有几个由导航 Controller 控制的 View Controller 。 例如,viewController A 和 viewController B 都可以将 viewController
我使用新的Gmail API为用户创建草稿。 API响应提供了新创建的消息ID。 然后,我可以使用URL https://mail.google.com/mail/#drafts?compose=[m
Redis列表实现了哪种内部数据结构以实现这一目的?链表将需要O(n)索引,而数组将需要O(n)左/右推/弹出。 最佳答案 根据official documentation,它们被实现为linked
我正在使用 WPF Popup 控件,它显示背景为黑色。我在其中放置了一个 StackPanel 并设置了 Background="Transparent",但这没有帮助。
我希望页面内的容器在事件时占据页面的整个宽度并覆盖在其他所有内容上。这是我目前所拥有的,但它没有按我想要的方式工作: $(function() { $('.main a').click( fu
我是一名优秀的程序员,十分优秀!