我有一个tableView。它不是tableViewController。在我的ViewController上,我有一个包含15个选项的tableView。我可以毫无问题地选择每个选项。所以我想使用一个不在视图控制器内部的按钮,当我选择它时,它确定选择了哪一行表。现在我只是出现一条警告消息,显示选择了哪一行。
基本上桌子的每一行都是一个不同的种族:矮人,小精灵等......在桌子视图的正下方是一个按钮。当我点击该按钮时,我想要一个警告显示已经选择了哪一行。
这是我到目前为止所做的:
class raceViewController: UIViewController, UITableViewDelegate, UITableViewDataSource
{
@IBOutlet var raceInfoBtn: UIButton!
@IBOutlet var raceTable: UITableView!
// defines an array with the races
let races = ["Dwarf", "Elf","Gnome","Half-Elf","Half-Orc","Halfling","Human", // core races
"Ifrit","Oread","Sylph","Tengu","Undine", // featured races
"Kitsune","Nagaji","Wayang"] // uncommon races// uncommon races
// defines the stats array to correspond to the races array
let stats = ["+2 Con & Wis, -2 Chr","+2 Dex & Int, -2 Con","+2 Con & Dex, -2 Str","Click to add","Click to add","+2 Dex & Chr, -2 Str","Click to add", // core races
"+2 Dex & Chr, -2 Wis","+2 Str & Wis, -2 Chr","+2 Dex & Int, -2 Con","+2 Dex & Wis, -2 Str","+2 Dex & Wis, -2 Str", // featured races
"+2 Dex & Chr, -2 Str","+2 Str & Chr, -2 Int","+2 Dex & Int, -2 Chr"] // uncommon races// uncommon races] //core
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return(races.count)
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = UITableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier: "raceCell")
//cell.textLabel?.text = races[indexPath.row] + stats[indexPath.row]
cell.textLabel?.text = races[indexPath.row]
cell.detailTextLabel?.text = stats[indexPath.row]
return (cell)
}
@IBAction func raceInfoBtn(_ sender: Any)
{
{
let alertController = UIAlertController(title: "iOScreator", message:
"dwarf", preferredStyle: UIAlertControllerStyle.alert)
alertController.addAction(UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.default,handler: nil))
self.present(alertController, animated: true, completion: nil)
}
}
}
在IBAction raceInfoBtn
中我想要它来检查实际选择了哪一行。
答案 0 :(得分:1)
raceTable.indexPathForSelectedRow
应该为您提供所选的索引路径,您可以使用该路径在警报中显示正确的信息。
答案 1 :(得分:0)
据我所知,你有15个选择,每行都有自己的按钮,所以有15个按钮。 你想获得touchUpInside事件得到选定的行。
所以你必须在tableviewcell的内容视图中添加按钮。
现在在cellForIndexPath方法中,你必须在你的函数中添加addTarget,并将标记作为其indexPath.row。
现在将每个选定的行作为发件人的标记访问!!
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = UITableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier: "raceCell")
//cell.textLabel?.text = races[indexPath.row] + stats[indexPath.row]
cell.textLabel?.text = races[indexPath.row]
cell.detailTextLabel?.text = stats[indexPath.row]
cell.yourButton.addTarget(self, action: #selector(raceInfoBtn), for: .touchUpInside)
cell.yourButton.tag = indexPath.row
return (cell)
}
@IBAction func raceInfoBtn(_ sender: UIButton)
{
{
let alertController = UIAlertController(title: "iOScreator \(sender.tag)", message:
"dwarf", preferredStyle: UIAlertControllerStyle.alert)
alertController.addAction(UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.default,handler: nil))
self.present(alertController, animated: true, completion: nil)
}
}