次のView Controllerにsegueに問題があります。私は行とセクションでレルムデータを表示するテーブルビューを持っています。 追加ボタンを押すとコントローラが表示され、データを正しく保存できます。 セルを選択すると、同じビューコントローラに移動し、テキストフィールドに正しいデータを入力する必要があります。インデックスセクションと行のtableviewから正しいRealmオブジェクトを渡す際の問題
現時点では、最初のセクションのindexpath行のデータのみを選択できます。他のセクションから選択したセルは、最初のセクションのデータだけを表示します。
私は正しいセクションを取得するためにさまざまな方法を試しましたが、失敗しました。
私が間違っていることを誰かに教えてもらえますか?
私はxcode 7.3とレルム2.0.3を使用しています。
以下は私のテーブルビューのコードです。下の両方の答えはあなたに感謝
class TableViewController: UITableViewController {
let items = try! Realm().objects(ContactItem).sorted(["Initial", "Name"])
var sectionNames: [String] {
return Set(items.valueForKeyPath("Initial") as! [String]).sort()
}
//var sectionTitles = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
tableView.reloadData()
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
tableView.reloadData()
}
func setupUI() {
tableView.registerClass(Cell.self, forCellReuseIdentifier: "cell")
}
func items(forSection section: Int) -> Results<ContactItem> {
return items.filter("Initial == %@", sectionNames[section])
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return sectionNames.count
}
override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return sectionNames[section]
}
override func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int {
return items(forSection: section).count
}
override func sectionIndexTitlesForTableView(tableView: UITableView) -> [String]? {
return sectionNames as [String]
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
cell.textLabel?.text = items.filter("Initial == %@", sectionNames[indexPath.section])[indexPath.row].Name
return cell
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
let contact : ContactItem = items[indexPath.row]
performSegueWithIdentifier("editContact", sender: contact)
print("Selected row at \(indexPath.row)")
print("Selected section at \(indexPath.section)")
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
if(segue.identifier == "editContact")
{
let viewController = segue.destinationViewController as! AddEntryViewController
viewController.contact = sender as! ContactItem
}
}
@IBAction func addContact(sender: AnyObject) {
}
}
EDIT。
もう1つ質問があります - 連絡先が追加されたときにインデックスセクションのタイトルのみが表示されますが、連絡先の先頭からすべてのインデックスタイトルが右下に表示されます。これは可能ですか?
優れたおかげ。私はそれが前にそれを試みたが、私はそれを入力しなかったかもしれないと誓ったのかもしれません。私はちょうど私が混乱したように多くの異なる方法を試みたと思う。 – scooby
さらに簡単な質問 - 現在、連絡先が追加されたときにのみインデックスセクションのタイトルが表示されますが、連絡先の先頭からすべてのインデックスタイトルが右下に表示されます。これは可能ですか? – scooby