我的情况是这样的。 我有一个tableview单元格,它有一个按钮。如果它有火,它会弹出如下面的
对于上面的菜单弹出窗口,source是每个单元格最右边的按钮。
我有另一个名为diplayAccounts的表视图。 单击弹出菜单的单元格(即视图层次结构)displayAccounts 视图控制器需要显示为弹出窗口。我怀疑的是它应该是什么来源。
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
menuTapped(self)
}
方法menuTapped如下
func menuButtonTapped(sender: AnyObject)
{
let storyboard : UIStoryboard = UIStoryboard(name: "Storyboard", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("HierarchyTableViewController") as! HierarchyTableViewController
vc.modalPresentationStyle = UIModalPresentationStyle.Popover
let popover: UIPopoverPresentationController = vc.popoverPresentationController!
popover.sourceView = sender as? UIView
popover.delegate = self
presentViewController(vc, animated: true, completion:nil)
}
我得到的错误
答案 0 :(得分:0)
在另一个popover(来自Apple Mobile人机界面指南)中展示pop并不是一个好主意
你能做的最好的事情就是
在弹出视图控制器类
在显示弹出窗口按钮的单元格类中
(即上图中显示44087和111的单元格)
显示您想要的另一个弹出窗口。
<强>更新强>
这将是弹出视图控制器,显示上面显示的项目列表
PopOverWithListItemsViewController.h文件
#import <UIKit/UIKit.h>
@protocol PopoverWithListItemsViewDelegate <NSObject>
- (void)didSelectedListItemAtIndex:(NSInteger)index;
@end
@interface PopOverWithListItemsViewController : UIViewController
@property (nonatomic, weak) id<PopoverWithListItemsViewDelegate> delegate;
@end
在表格视图选择事件中,添加委托调用,如
NSInteger indexOfSelectedItem = 4;// jus for demo setting index as 4
[self.delegate didSelectedListItemAtIndex:indexOfSelectedItem];
在您提供列表弹出窗口的类中,添加以下内容
<强>步骤1 强>
您提供弹出窗口的类应该向代理人确认如下
@interface ViewController () <PopoverWithListItemsViewDelegate> // let ViewController is the class from which you presenting the pop over
<强>第二步强>
// Let this be the cell's button tap event from which you presenting the pop over
- (IBAction)buttonTapEvent:(id)sender
{
// Presenting pop over sections
PopOverWithListItemsViewController *listItemsPopOverVC = [[PopOverWithListItemsViewController alloc] init];
listItemsPopOverVC.delegate = self;
// pop over presenting with listItemsPopOverVC as popover's view controller
}
<强>步骤3 强>
// Delegate method implementation.
- (void)didSelectedListItemAtIndex:(NSInteger)index
{
// Here we get the index of the selected cell in the popover.
// Present the new popover from here, after customizing the new pop over contents.
}