アクションでtableViewセルを作成しました。選択されているセルのindexPathを知るためのアクションが必要です。私は、アクションにパラメータとしてindexPathを渡す方法や、その周りに他の方法を見つける方法を見つけることができません。ここでのtableView cellForRowAtと実行されるアクションのためのコードは次のとおりです。Swiftのアクション関数にパラメータを渡す
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "menuCell", for: indexPath) as! CustomCell
cell.foodName.text = self.menuItems[indexPath.row]
//adding gesture recognizer with action Tap to cell
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(Tap(gesture:index:IndexPath.row)))
cell.addGestureRecognizer(tapGesture)
return cell
}
func Tap(gesture: UIGestureRecognizer , index: Int){
print("Tap")
//necessary so that the page does not open twice
//adding the rating view
let ratingVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "rating") as! RatingView
ratingVC.foodName = selectedItem
self.addChildViewController(ratingVC)
ratingVC.view.frame = self.view.frame
self.view.addSubview(ratingVC.view)
ratingVC.didMove(toParentViewController: self)
}
私はタップにパラメータとしてIndexPath.rowを渡す方法を見つけ出すことはできません。
tableViewで1つの行のみを選択できるようにする場合は、 'fund tap'の' indexPathForSelectedRow'プロパティを使用して、現在選択されている行のindexPathを取得できます。プロパティの詳細については、[Apple Doc](https://developer.apple.com/reference/uikit/uitableview/1615000-indexpathforselectedrow)を参照してください。 –