Я новичок в Swift и IOS, у меня был обычный вид стола, и все сработало. Я теперь внедрил ячейку представления пользовательской таблицы и задался вопросом, как реализовать мой метод PrepareForSegue с помощью моего UITableView. Я хочу, чтобы иметь возможность отправить выбранный индекс ячейки таблицы в segue для следующего контроллера для доступа к определенной позиции массива. В настоящий момент объект-отправитель является объектом CustomCell: UITableViewCell. могу ли я получить доступ к индексу таблицы от этого объекта или каким-либо другим способом?Segue из пользовательских данных Cell in Swift
//
// ViewController.swift
// OBU Bus Tracker
//
// Created by AJ Norton on 4/20/15.
// Copyright (c) 2015 AJ Norton. All rights reserved.
//
import UIKit
class ViewController: UIViewController, UITableViewDelegate {
@IBOutlet var table: UITableView!
var locations = [String]()
var overall = Dictionary<String, AnyObject>()
override func viewDidLoad() {
super.viewDidLoad()
// check if the user is running the app for the first time
// if let firstTime = NSUserDefaults.standardUserDefaults().objectForKey("firstTime")
// {
//
// println("second time")
// }
// else
// {
// println("worked")
// NSUserDefaults.standardUserDefaults().setBool(true, forKey: "firstTime")
// }
if let path = NSBundle.mainBundle().pathForResource("busSchedule", ofType: "plist")
{
if let dict = NSDictionary(contentsOfFile: path) as? Dictionary<String, AnyObject>
{
locations = dict.keys.array
overall = dict
}
}
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return locations.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell: CustomRouteViewCell = table.dequeueReusableCellWithIdentifier("Cell") as! CustomRouteViewCell
cell.locationTitle.text = "\(locations[indexPath.row])"
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
println("I was clicked")
performSegueWithIdentifier("routeToTime", sender: indexPath.row)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
//TODO
println("\(sender?.integerValue)")
if segue.identifier == "routeToTime"
{
var ttvc = segue.destinationViewController as! TimeViewController
var s = sender as! CustomRouteViewCell
println("\(s.in)")
var place = s.indentationLevel as! Int
var dicts = overall[locations[place]] as! Dictionary<String,AnyObject>
var arr = dicts["Weekday"] as! [Int]
ttvc.days = dicts
ttvc.times = arr.reverse()
}
}
}
Является ли ваш segue из ячейки или контроллера? Похоже, что это из ячейки, если отправитель является ячейкой, но в этом случае вы не должны вызывать функцию выполнения в didSelectRowAtIndexPath (на самом деле вам вообще не нужно реализовывать этот метод). – rdelmar
Это неизвестно. Я не знаю, где делается segue. Его больше не вызывают в моем методе prepareForSegue. Я не знаю, где зовут segue. – applejuiceteaching
Разве вы не сделали сегу? Вы перетащили из ячейки или из значка контроллера, когда вы это сделали? – rdelmar