Ios 在TableView中查找[indexpath.row]值

Ios 在TableView中查找[indexpath.row]值,ios,swift,xcode,tableview,indexpath,Ios,Swift,Xcode,Tableview,Indexpath,本质上,我试图在选择特定行时更改一个变量,但是代码仍在打印-1。这是我所有的代码。我试图能够单击某个tableview单元格,然后能够打印出该文本。搜索栏会影响我的价值观吗?我首先对tableview和searchbar进行编码,然后实现一个submit按钮,用于打印变量的值 类ViewController:UIViewController、UITableViewDataSource、UISearchBarDelegate、UITableViewDelegate{ @ibvar搜索栏:UISea

本质上,我试图在选择特定行时更改一个变量,但是代码仍在打印-1。这是我所有的代码。我试图能够单击某个tableview单元格,然后能够打印出该文本。搜索栏会影响我的价值观吗?我首先对tableview和searchbar进行编码,然后实现一个submit按钮,用于打印变量的值

类ViewController:UIViewController、UITableViewDataSource、UISearchBarDelegate、UITableViewDelegate{
@ibvar搜索栏:UISearchBar!
@IBVAR表格视图:UITableView!
let Data=[“狗”、“猫”、“山羊”]
var filteredData:[字符串]!
var num=-1
var-animal:String=“”
重写func viewDidLoad(){
super.viewDidLoad()
如果tableView!=nil{
self.tableView.dataSource=self
}
filteredData=数据
}
func tableView(tableView:UITableView,cellForRowAt indexath:indexPath)->UITableViewCell{
让cell=tableView.dequeueReusableCell(标识符为“cell”,for:indexPath)作为UITableViewCell
cell.textlab?.text=filteredData[indexPath.row]
打印(indexPath.row)
返回单元
}
func tableView(tableView:UITableView,numberofrowsinssection:Int)->Int{
返回filteredData.count
}
func tableView(tableView:UITableView,didSelectRowAt indexPath:indexPath){
如果indexath.row==0{
num=0
}
如果indexath.row==1{
num=1
}
如果indexath.row==2{
num=2
}
}
func searchBar(searchBar:UISearchBar,textDidChange searchText:String){
filteredData=searchText.isEmpty?数据:Data.filter{(项:字符串)->Bool-in
//如果dataItem与searchText匹配,则返回true以包含它
return item.range(of:searchText,options:.不区分大小写,range:nil,locale:nil)!=nil
}
tableView.reloadData()
}
func searchBarTextDidBeginEditing(searchBar:UISearchBar){
self.searchBar.showsCancelButton=true
}
func searchBarCancelButtonClicked(searchBar:UISearchBar){
searchBar.showsCancelButton=false
searchBar.text=“”
searchBar.resignFirstResponder()辞职
}
@iAction func提交(\发送方:任何){
打印(个)
打印(filteredData.count)
如果num==0{
动物=“狗”
}
如果num==1{
动物=“猫”
}
如果num==2{
动物=“山羊”
}
印刷品(动物)
}
}

有几个问题不允许您实现自己的目标:

=
运算符正在检查两个变量是否相等,而不是将一个变量分配给另一个变量,它将返回一个布尔值,
true
false
。在
if
语句的主体中,将
=
更改为
=
,为变量num赋值

将代码更改为:

func tableView(tableView:UITableView,didSelectRowAt indexPath:indexPath){
如果indexath.row==0{
num=0
}
如果indexath.row==1{
num=1
}
如果indexath.row==2{
num=2
}
}
看到更新的代码后,看起来您只设置了tableView的
数据源
,而没有设置委托。您需要将该行添加到
viewDidLoad

tableView.delegate=self
此外,与使用多个
if
语句检查
indepath
不同,您可以将整个代码体替换为一行:

func tableView(tableView:UITableView,didSelectRowAt indexPath:indexPath){
num=indexPath.row
}

您需要输入完整的表格代码。现在,您所显示的还不够。我尝试了您的答案,但收到的值仍然是-1您如何以及在哪里打印num的值?你也在其他地方更改num的值吗?嘿@Mark,看看我的更新答案-我相信我找到了问题的根源。我没有更改num,我按下一个按钮后,它会打印数字。幸运的是,我尝试了你给我的东西,但仍然不起作用,非常感谢