2016-05-15 11 views
0

私はUIButtonを含むカスタムUITableViewCellを持っています。私はボタンを押すと、何らかのテキストでポップオーバーを表示したい。テキストは、押されたindexPathによって異なります。UITableViewCellのポップオーバーをUIButtonアクションで表示する

以下は私のコードです。

class CellButton: UIButton { 
weak var myTable: UITableView? 
weak var myCell: UITableViewCell? 
} 

これは私のカスタムUITableViewCellです。私は行を印刷するボタンアクションを持っていますが、代わりにこれをポップオーバーとして表示したいと思います。

class CourseworkTableViewCell: UITableViewCell, UIPopoverPresentationControllerDelegate { 

@IBOutlet weak var courseworkName: UILabel! 
@IBOutlet weak var courseworkMark: UILabel! 
@IBOutlet weak var courseworkValue: UILabel! 
@IBOutlet weak var courseworkReminder: UILabel! 
@IBOutlet weak var courseworkDueDate: UILabel! 
@IBOutlet weak var viewNote: CellButton! 

@IBOutlet weak var courseworkProgressBar: ProgressBar! 
@IBAction func viewNotePressed(button: CellButton){ 

if let myCell = button.myCell, indexPath = button.myTable?.indexPathForCell(myCell) { 

    let entry = courseworks[indexPath.row] 
    print(entry.valueForKey("courseworkNotes") as! String) 




} 
} 

答えて

0

テーブルにジェスチャ認識機能を設定したり、セルが押されたかどうかを検出したり、セルが押されたかどうかを検出したりできます。

このようなプロパティを宣言します。

UILongPressGestureRecognizer * lpgr 

その後:

func setUpLongPressGesture() { 
    self.lpgr = UILongPressGestureRecognizer(target: self, action: "handleLongPressGestures:") 
    self.lpgr.minimumPressDuration = 1.0 
    self.lpgr.allowableMovement = 100.0 
    self.myTable.addGestureRecognizer(self.lpgr) 
} 

func handleLongPressGestures(sender: UILongPressGestureRecognizer) { 
    if sender.isEqual(self.lpgr) { 
     if sender.state == .Began { 
       //Get the table indexPath 
      var p: CGPoint = sender.locationInView(self.myTable) 
      var indexPath: NSIndexPath = self.myTable(forRowAtPoint: p) 
      //if indexPath==nil means long press on table view but not on a row 
      if indexPath != nil { 
       var cell: UITableViewCell = self.myTable.cellForRowAtIndexPath(indexPath) 
       if cell.isHighlighted { 
        NSLog("long press on table view at section %ld row %ld", Int(indexPath.section), Int(indexPath.row)) 
        self.currentIndexPath = indexPath 
        //Do your stuff 
       } 
      } 
     } 
    } 
    // End sender isEqual longPress 
} 
1

ViewController.swift

1.In cellForRowAtIndexPathがボタン

cell.myButton.tag=indexPath.row 
のタグを割り当て

2.ボタンのIBActionで、そのタグにアクセスすることができます。

@IBAction func buttonTapped(sender: UIButton) { 

    let entry = courseworks[sender.tag] 
    //here you can implement a alertView to show popover 
      //according to your requirement 
    } 
関連する問題