12

私の UITableView は、選択したセルの詳細ページを表示するために 2 回クリックする必要があります。1 回は選択用、もう 1 回は詳細ビューを表示するためです。クリックしたセルの詳細ビューを 1 回のクリックで直接表示したいと思います。

UITableViewManager.m 内のこのメソッドでモーダル セグエを使用します。

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"showDetail"]) {
        NSIndexPath *indexPath = [playerList indexPathForSelectedRow];
        TCPlayerStat *object = _objects[indexPath.row];
        [[segue destinationViewController] setPlayerStat:object];
    }
}

Navigation Controller を持っていないため (実際にはしたくありません)、プッシュ セグエを使用できません。

TableView Attribute Inspector を調べましたが、これに関連するものは何も見つかりませんでした。「単一選択」を選択し、「タッチ時に選択を表示」にチェックを入れました。これが可能かどうかはわかりません。可能であれば、どこを見ればよいでしょうか..

ご協力いただきありがとうございます。


編集 1: このように 2 つのメソッドを記述しても、まだ機能せず (2 回クリックする必要があります)、新しい警告ログが作成されます。

「警告: プレゼンテーションの進行中に TCRootViewController: 0xa24f050 で TCDetailViewController: 0xa27b900 を提示しようとしています!」

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self performSegueWithIdentifier:@"showDetail" sender:self];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"showDetail"]) {
        NSIndexPath *indexPath = [playerList indexPathForSelectedRow];
        TCPlayerStat *object = _objects[indexPath.row];
        TCDetailViewController *detailViewController = [segue destinationViewController];
        [detailViewController setPlayerStat:object];
    }
}

EDIT 2:理由はわかりませんが、完全に機能し、テーブルビューを2回クリックする必要がない場合があります。わかりません:/


以下の解決策

4

6 に答える 6

16

私は問題が何であったかが好きです!

Storyboard で必要のないパラメーターを変更しました。選択セルをクリックしたときに背景のハイライト色を表示しないようにしたかったのですが、セグエはそれに基づいて適切に機能しているようです。

修正方法: ストーリーボードで、ナビゲーターでテーブル ビュー セルを選択し、[選択] (属性インスペクター) で [なし] オプションを選択しないでください。「ブルー」、「グレー」、または「デフォルト」がうまく機能するようです。

于 2013-10-23T13:41:18.230 に答える
0

使用する

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

それ以外の

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

その後、任意のコードを記述でき、最初のクリックで機能します。

于 2013-10-21T00:11:30.657 に答える