1

それに応じて関連データを渡すことができるようにindexPath、私の選択行を決定しようとしています。UITableView現在、0どのセルを選択してもログを記録し続けます。理由はありますか?(はい、IBOutletテーブルの は正しく接続されています)。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"patientChart"])
    {
        UITabBarController *tabBar = (UITabBarController *)segue.destinationViewController;
        PatientChartViewController *vc = [tabBar.childViewControllers objectAtIndex:0];
        NSIndexPath *path = [self.appointmentTableView indexPathForSelectedRow];
        vc.appointmentDictionary = [self.appointmentArray objectAtIndex:path.row];
    }
}
4

2 に答える 2

3

メソッドindexPathForSelectedRowは、行が選択されている場合は選択されている行のインデックスを返し、それ以外の場合は 0 を返します。

したがって、たとえば、cellが選択され、後で選択解除された場合、その時点ではセルが 1 つも選択されていないためindex path、呼び出しによって取得することはできません。[tableView indexPathForSelectedRow];

于 2011-11-16T06:33:19.070 に答える
1

iOS5 を使用している場合、これに対する解決策は、以下に示すように、.h でインスタンスを宣言し、プロパティをコピーに設定することです。

NSIndexPath *path;
@property (nonatomic, copy) NSIndexPath *path;

indexpath 値をインスタンス、つまりcellForRowAtIndexPathメソッド内のパスに割り当てます。

iOS5 でこれを実行しようとしたときにこの問題が発生し、上記のように解決されました。これがあなたを助けることを願っています。

于 2011-11-16T06:51:28.107 に答える