我正在使用UITableView
并使用{WWI 2014中的讨论" prepareForSegue
iOS8中的进展"
View Controller
方法呈现弹出框
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
UINavigationController * nvc = segue.destinationViewController;
UIPopoverPresentationController * pvc = nvc.popoverPresentationController;
pvc.delegate = self;
}
- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller
{
return UIModalPresentationNone;
}
问题是,我需要将编辑行中的值传递给popover。有没有办法干净利落地做到这一点(我知道它不存在,但是)
[self.myTableView indexPathForEditingRow];
我试过
[self.myTableView indexPathForSelectedRow];
但这会返回表格中的第一行。
答案 0 :(得分:1)
如果从表视图中调用performSegueWithIdentifier,则可以发送indexPath。
[self performSegueWithIdentifier:@"identifier" sender:(NSIndexPath *)indexPath];
然后你可以调用prepareForSegue,你需要一个公开的方法或属性来设置popover上的indexPath
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(NSIndexPath *)indexPath
{
if ([segue.identifier isEqualToString:@"identifier"])
{
UINavigationController * nvc = segue.destinationViewController;
UIPopoverPresentationController * pvc = nvc.popoverPresentationController;
//added property
pvc.indexPath = indexPath;
pvc.delegate = self;
}
}
答案 1 :(得分:0)
检查您的sender
是谁。如果它是一个细胞,你就拥有了你所需要的一切。
如果没有,您需要创建一个属性并记住didSelectCell
委托的tableView
方法中的索引路径。
答案 2 :(得分:0)
尝试:
CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:buttonPosition];
NSLog(@"Riga selezionata: %ld",(long)[indexPath row]);
答案 3 :(得分:0)
您可以使用此UITableView
扩展程序:
extension UITableView {
var indexPathForEditingRow: NSIndexPath? {
return indexPathsForEditingRows.first
}
var indexPathsForEditingRows: [NSIndexPath] {
return visibleCells.flatMap { cell -> NSIndexPath? in
guard let indexPath = indexPathForCell(cell) where cell.editingStyle != .None else {
return nil
}
return indexPath
}
}
}