我正在使用故事板,我有一个UITableView.我有一个segue设置,从我的表推送到细节VC.但是我应该使用哪种方法来处理这个问题?我必须将几个对象传递给详细视图.但我使用didSelectRowAtIndex或-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender?
我有一个UITableView,它使用基于JSON调用的数据填充Cell.像这样:
var items = ["Loading..."]
var indexValue = 0
// Here is SwiftyJSON code //
for (index, item) in enumerate(json) {
var indvItem = json[index]["Brand"]["Name"].stringValue
self.items.insert(indvItem, atIndex: indexValue)
indexValue++
}
self.tableView.reloadData()
Run Code Online (Sandbox Code Playgroud)
如何在选中单元格时获取单元格的标签,然后将其传递给另一个ViewController?
我设法得到:
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
println("You selected cell #\(indexPath.row)!")
// Get Cell Label
let indexPath = tableView.indexPathForSelectedRow();
let currentCell = tableView.cellForRowAtIndexPath(indexPath!) as UITableViewCell!;
println(currentCell.textLabel.text)
}
Run Code Online (Sandbox Code Playgroud)
我只是想弄清楚如何将它作为变量传递给下一个UIViewController.
谢谢
我问了一个类似的问题,我已经阅读了无数其他问题,但我仍然无法解决这个问题,我现在花了几个晚上试图解决它.
我有一个自定义的UITableView类,我已经将其子类化为不同的东西.在我的子类中,我用户覆盖了诸如didSelectRowAtIndexPath之类的东西.
如果我将它分配给一个表它可以正常工作,除了我必须长按才能触发didSelectRowAtIndexPath.Tap似乎根本不起作用.我在项目的其他地方确实有一个手势识别器,但是我已经将它们全部禁用了,而且我仍然没有运气.我已经读到这可能与超级或触摸开始有关但我觉得我现在完全陷入困境.请帮我!
class BaseTable: UITableView, UITableViewDelegate, UITableViewDataSource {
var rowsInSection: Int { return 0}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
//Standard table set up funcs
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
print(IndexPath.row)
}
}
class NewTable: BaseTable{
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print (IndexPath.row + " NEW")
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试将listView选择的选定索引号从一个ViewController传递到另一个ViewController但遇到问题时,tableView didSelectRowAtIndexPath委托比prepareForSegue函数稍晚运行.
基本上,在didSelectRowAtIndexPath中,我选择变量,然后在prepareForSegue中获取.问题是prepareForSegue似乎运行第二个选择单元格,并且在调用didSelectRowAtIndexPath函数之前,所以我的变量没有被传递.
我的主要代码是:
tableView didSelectRowAtIndexPath委托,设置'selectedResult'...
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
selectedResult = indexPath.item
txtNameSearch.resignFirstResponder() //get rid of keyboard when table touched.
println("saved result")
//tableView.deselectRowAtIndexPath(indexPath, animated: false)
//var tappedItem: ToDoItem = self.toDoItems.objectAtIndex(indexPath.row) as ToDoItem
//tappedItem.completed = !tappedItem.completed
//tableView.reloadData()
}
Run Code Online (Sandbox Code Playgroud)
prepareForSegue函数将变量作为'toPass'发送到另一个ViewController('detailViewController'):
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!){
if (segue.identifier == "detailSeque") {
println("preparing")
var svc = segue!.destinationViewController as detailViewController
svc.toPass = selectedResult
//println(tableView.indexPathsForSelectedRows().
//svc.toPass = tableView.indexPathForSelectedRow()
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢
swift ×3
uitableview ×3
ios ×2
segue ×2
iphone ×1
objective-c ×1
storyboard ×1
tableview ×1
touchesbegan ×1