我有一个自定义单元格,其中包含一个按钮,我想在按下按钮时显示一个操作表,但是你知道,UITableViewCell没有方法" presentViewController&#34那么我该怎么办?
答案 0 :(得分:2)
在自定义单元格的swift文件中,编写一个由viewContoller符合的协议,
// your custom cell's swift file
protocol CustomCellDelegate {
func showActionSheet()
}
class CustomTableViewCell : UITableViewCell {
var delegate: CustomCellDelegate?
// This is the method you need to call when button is tapped.
@IBAction func buttonTapped() {
// When the button is pressed, buttonTapped method will send message to cell's delegate to call showActionSheet method.
if let delegate = self.delegate {
delegate.showActionSheet()
}
}
}
// Your tableViewController
// it should conform the protocol CustomCellDelegate
class MyTableViewController : UITableViewController, CustomCellDelegate {
// other code
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("CustomCellReuseIdentifier", forIndexPath: indexPath)
// configure cell
cell.delegate = self
return cell
}
// implement delegate method
func showActionSheet() {
// show action sheet
}
}
确保您的视图控制器符合CustomCellDelegate协议并实现showActionSheet()方法。
在cellForRowAtIndexPath dataSource方法中创建单元格时,将viewContoller指定为自定义单元格的委托。
您可以在viewController中的showActionSheet方法中显示新的视图控制器。
答案 1 :(得分:0)
这就是你要这样做的方式:
UITableViewCell
说MyTableViewCellDelegate
。cellButtonTapped
。MyTableViewCellDelegate
,即在标题文件中添加<MyTableViewCellDelegate>
。cellForRowAtIndexPath:
方法中,初始化单元格时,将self设置为委托。cellButtonTapped
并根据需要显示操作表。