5

さて、件名で言ったように、私の問題は、関連するセグエを自動的に実行する目的で、テーブルビューのセルをプログラムで選択していることです。関連するtableviewcontrollerのviewWillAppearでこれを行うコードがあります。

その結果、セルは選択されますが、セグエは実行されません。なぜなのかご存知ですか?

問題を解決するためにviewWillAppearでプログラムでセグエを実行している瞬間ですが、セルが選択されている場合にセグエが自動的に実行されない理由が気になります...

ところで。セルのタップを選択すると正しく機能するため、セグエは問題ないはずです。

詳細: 私は splitviewcontroller に取り組んでいます。左側には tableviewcontroller があり、セグエには右側に viewcontroller があります

どうもありがとう!

カルロス

関連コード:

- (void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];

// Si no hay ninguna fila seleccionada, seleccionaremos la primera

// Obtenemos la fila seleccionada
NSIndexPath *filaSeleccionadaPath = [self.tableView indexPathForSelectedRow];

// Si no hay ninguna fila seleccionada
if (!filaSeleccionadaPath)
{
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
    [self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];

}

}

4

1 に答える 1

7

のドキュメントは以下をUITableView指定します:

このメソッドを呼び出しても、デリゲートはtableView:willSelectRowAtIndexPath:またはtableView:didSelectRowAtIndexPath:メッセージを受信しません。また、UITableViewSelectionDidChangeNotification通知をオブザーバーに送信しません。

したがって、アクションはトリガーされません。performSegueWithIdentifier:sender:セグエを使用している場合は、クラスで使用することをお勧めしますUIViewController(ほとんどの場合self)。識別子と送信要素(ほとんどの場合セル)を指定できます。

于 2012-04-11T11:24:10.927 に答える