我想在按钮单击中在自定义UITableViewCell中显示UIAlertController.但我找不到任何办法.请看下面我试过的代码.
此代码在UITableViewCel中给出错误,如上图所示.
请帮帮我.全班代码如下:
// var arrayOfCallsName:[String] = [“”]
@H_502_5@@IBAction func clickDetialsInfoButton(sender: AnyObject) { var alert = UIAlertController(title: "dddddd",message: arrayOfDetialsInfoDeerCalls[sender.tag],preferredStyle: UIAlertControllerStyle.Alert) alert.addAction(UIAlertAction(title: "OK",style: UIAlertActionStyle.Default,handler: nil)) self.presentViewController(alert,animated: true,completion: nil) //sender.sup // } var audioPlayer = AVAudioPlayer() @IBAction func clickplayButton(sender: AnyObject) { println(sender.tag) var alertSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(arrayOfDeerSoundsCall[sender.tag],ofType: "wav")!) println(alertSound) // Removed deprecated use of AVAudioSessionDelegate protocol AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback,error: nil) AVAudioSession.sharedInstance().setActive(true,error: nil) var error:NSError? audioPlayer = AVAudioPlayer(contentsOfURL: alertSound,error: &error) audioPlayer.prepareToPlay() audioPlayer.play() } override func setSelected(selected: Bool,animated: Bool) { super.setSelected(selected,animated: animated) // Configure the view for the selected state } func setCell(callName: String){ self.DeerCallNameLabel.text=callName }}
解决方法
我找到了解决方案.以下是上述问题的代码.
在viewcontroller中为按钮编写以下代码,其中存在表视图. @H_502_5@func tableView(tableView: UITableView,cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let deerNameCell: CustomCellDeerCalls = tableView.dequeueReusableCellWithIdentifier("Cell") as CustomCellDeerCalls let deercallcell=arrayOfCallsName[indexPath.row] deerNameCell.DeerCallNameLabel.text=deercallcell.callName deerNameCell.playButton.tag=indexPath.row deerNameCell.detialsInfoButton.tag=indexPath.row deerNameCell.detialsInfoButton.addTarget(self,action: "showAlert:",forControlEvents:UIControlEvents.TouchUpInside) return deerNameCell }
在viewcontroller中为按钮编写以下代码,其中存在表视图. @H_502_5@func tableView(tableView: UITableView,cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let deerNameCell: CustomCellDeerCalls = tableView.dequeueReusableCellWithIdentifier("Cell") as CustomCellDeerCalls let deercallcell=arrayOfCallsName[indexPath.row] deerNameCell.DeerCallNameLabel.text=deercallcell.callName deerNameCell.playButton.tag=indexPath.row deerNameCell.detialsInfoButton.tag=indexPath.row deerNameCell.detialsInfoButton.addTarget(self,action: "showAlert:",forControlEvents:UIControlEvents.TouchUpInside) return deerNameCell }
和相同视图控制器中的警报功能:
@H_502_5@func showAlert(sender:UIButton!) { println(sender.tag) let deercallcell=arrayOfCallsName[sender.tag] var alert = UIAlertController(title: deercallcell.callName,preferredStyle: UIAlertControllerStyle.Alert) alert.addAction(UIAlertAction(title: "OK",handler: nil)) self.presentViewController(alert,completion: nil) }