2009-08-18 2 views
0

iphoneアプリケーションでIndexpath.rowの値が更新されない

私はプログラムで作成されたテーブルビューで選択された行に基づいて何かを行うindexPath.row値(didselectedrowatindexpathメソッドの外)を取得しようとしています。

didselectedrowatindexpathメソッドからindexpath.rowにアクセスする必要があります。if/elseがindexpath.rowに基づいてアクションを定義します。

アプリケーション内に7枚のカードイメージと1つの[メニューリスト]テーブルビューがあります。ユーザーがテーブルビューの行をクリックするたびに画像をタッチする必要がある場合

私はこのコードを使ってIndexPath.row値を取得しようとしています。問題は、indexPath.rowの値が毎回更新されていないことです。それはちょうど古い価値を取っている。この問題の解決方法をご提案ください。

- (void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event 
{ 

    NSUInteger nSection =[myTableView numberOfSections]-1 ; 
    NSUInteger nRow = [myTableView numberOfRowsInSection:nSection];  
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:nRow inSection:nSection]; 

    NSLog(@"No of sections in my table view %d",nSection);  
    NSLog(@"No of rows in my table view %d",nRow); 
    NSLog(@"Value of selected indexPath Row %d", [indexPath.row]); 
    NSLog(@"VAlue of Array arrOperationChk %d",[arrOperationChk count]); 

} 
+0

こんにちは、ようこそ。 これらの行があるメソッドで質問を編集すると、問題を解決するのが簡単になると思います。 –

答えて

1

このコードは、何かに反応するように見える(表?)触れています。次に、最後のセクションにある行の数をテーブルに問い合わせ、インデックスパスを作成します。

テーブルは、各セクションの行数をキャッシュします。行数を変更した場合は、-insert/deleteRowsAtIndexPaths:withRowAnimation:を呼び出すか、-reloadDataを呼び出すことによって表に通知する必要があります。そうしないと、テーブルにはデータソースを再クエリする必要があることを知る方法がありません。

1

私がこのコードを間違って読んでいるのでなければ、最後のセルの最後のセル+ 1へのインデックスパスを取得していませんか?私はそれが変わることを期待しません。

あなたが選択したセルを取得したい場合は、あなたのUITableViewControllerオブジェクトで

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

メソッドを使用します。

1

他の人が言っているように、作成したばかりのindexPath変数を変更するコードはありません。

また、構文[indexPath.row]は間違っています。メソッドを呼び出すのでなければ、角括弧は必要ありません。 Objective-Cのポインタのようなドット構文を使用すると、それをメソッド呼び出し(たとえ暗黙的に存在しても)として考えるのではなく、構造体としての擬似インスタンス変数として考えることができます。

大きな目標は何ですか?私たちがあなたが達成しようとしていること/望んでいるものが何であるかを理解していれば、より有用な答えが生まれるかもしれません。

関連する問題