0

での複数行選択の私の最初の問題は、このUITableView質問で答えられました。しかし、私はObjective CとiOSの開発に非常に慣れていないため、答えは私が自分で進むことができない点に私を残しました。

daxnitroの答えに続いて、彼/彼女が提案したコードを実装したいと思います。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ([tableView indexPathIsSelected:indexPath]) {
        [tableView removeIndexPathFromSelection:indexPath];
    } else {
        [tableView addIndexPathToSelection:indexPath];
    }
    // Update the cell's appearance somewhere here
    [tableView deselectRowAtIndexPath:indexPath animated:NO];
}

indexPathIsSelected私はまだメソッドが必要で、 (たとえば)次のようにそれを実行できると思いました:

@interface MyTableViewController ()
- (BOOL)indexPathIsSelected:(NSIndexPath *)indexPath;
@end

@implementation MyTableViewController

// ...

- (BOOL)indexPathIsSelected:(NSIndexPath *)indexPath
{
    BOOL bIsSelected = NO;
    // ...
    return bIsSelected;
}
@end

しかし、それはうまくいきません。エラーメッセージは次のとおりです。 「UITableView」の表示された@interfaceはセレクター「indexPathIsSelected:」を宣言します注:代わりに.hファイルのインターフェースでメソッドを宣言した場合も同じことが起こります。

さて、私を困惑させているのは、これです:[tableView indexPathIsSelected:indexPath]どういうわけか、オブジェクトに呼び出され、そのtableView理由すらわかりません。それは、メソッドの宣言/定義で考慮しなければならないことですか?私は今、その呼び出しを見てメソッドを書くことさえできないので、本当に愚かだと感じています。

indexPathIsSelectedメソッドを正しく定義および宣言して、適切に使用できるようにするにはどうすればよいですか?

4

2 に答える 2

1

ではdidSelectRowAtIndexPath、変数tableViewUITableViewです。

の実装indexPathIsSelectedはクラスMyTableViewControllerにあります。これはおそらくですUITableViewController

UITableViewControllerUITableViewは異なるクラスです。

indexPathIsSelectedそのため、メソッドはUITableViewそこに実装されていないため、見つけることができませんMyTableViewController。別のクラスに実装されています。

だから...私は知識に基づいた推測をして、それdidSelectRowAtIndexPathがクラスの一部であると仮定しMyTableViewControllerます。この場合、

[self indexPathIsSelected:indexPath]

答えかもしれません(つまり、テーブルビューではなく呼び出しindexPathIsSelectedますself)。

于 2013-03-15T16:07:52.817 に答える
0

表示されているエラーメッセージが問題の鍵です。このメソッドindexPathIsSelectedは、カスタムクラスに実装されていますMyTableViewController。ただし、お持ちのUITableViewはまだ基本的なものUITableViewです。少なくとも、ストーリーボードに移動して、テーブルビューコントローラオブジェクトのカスタムクラスをに設定する必要がありますMyTableViewController

これを行うには、ストーリーボード(またはペン先)を開き、テーブルビューコントローラーを選択します。次に、IDインスペクター(通常は右側)で、カスタムクラスの下にMyTableViewControllerあるドロップダウンから選択します。

于 2013-03-15T16:06:20.533 に答える