我有一个 UITableView,我使用的方式与Xamarin的本教程中演示的方式相同。
根据示例中的说明,我在方法中将 设置cell.Accessory
为 a ,如下所示:DetailDisclosureButton
GetCell
public override UITableViewCell GetCell (UITableView tableView, MonoTouch.Foundation.NSIndexPath indexPath)
{
(Some code to create/style the cell, etc. See tutorial link.)
cell.Accessory = UITableViewCellAccessory.DetailDisclosureButton;
}
我想UIPopoverController
在点击时显示一个DetailDisclosureButton
。它的锚点需要“附加”到按钮上。
为此,我需要AccessoryButtonTapped
相应地更改方法,如下所示:
public override void AccessoryButtonTapped (UITableView tableView, NSIndexPath indexPath)
{
uipoc = new UIPopoverController(uivc);
uipoc.PopoverContentSize = new SizeF(200f, 300f);
uipoc.PresentFromRect (tableView.CellAt (indexPath).AccessoryView.Frame, tableView, UIPopoverArrowDirection.Right, true);
}
Uipoc
是一个类变量,和 (still empty) 一样UIViewController uivc
。
据我了解,PresentFromRect
的第一个参数确定 UIPopoverController '挂钩'到的 UIView,它需要该视图的 Frame 属性才能这样做。
不幸的是,我上面的方法不起作用。cell.AccessoryView
始终为空,即使我已设置cell.Accessory
为DetailDisclosureButton
.
此处列出的答案表明设置cell.Accessory
不影响cell.AccessoryView
属性(我知道它处理的是 ObjectiveC,但我想这同样适用于 MonoTouch)。
相反,建议通过分配 a来 DetailDisclosureButton
手动添加 a 。但是,这意味着我不能使用Xamarin 示例中的方法,需要创建自己的事件处理程序,等等。UIButton
cell.AccessoryView
AccessoryButtonTapped
作为替代方案,我尝试在单元格中循环Subviews
,并像这样连接 popovercontroller:
uipoc.PresentFromRect (tableView.CellAt(indexPath).Subviews[1].Frame, tableView, UIPopoverArrowDirection.Right, true);
但是,使用Subviews[0]
and Subviews[2]
,它根本不起作用,同时Subviews[1]
给了我奇怪的结果 - 弹出菜单总是显示DetailDisclosureButton
在表格中的第一个单元格旁边,无论点击哪个单元格的按钮。
我的问题:如果只是设置为,
有没有办法获得DetailDisclosureButton
的视图(ergo,附件的视图)?cell.Accessory
UITableViewCellAccessory.DetailDisclosureButton
如果不是,后一种解决方案(UIButton
手动添加)是实现我想要的唯一方法吗?如何在 C#/MonoTouch 中做到这一点?
谢谢!