1

How do I know which row is currently selected in table view without using any global variable to store last clicked row using this method.

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

6 に答える 6

8

アウトレットプロパティにUITableViewがある場合、次のように選択した行を取得できます。

[tableView indexPathForSelectedRow]

これは、選択した行の行番号とセクション番号を含むindexPathを返します。

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableView_Class/Reference/Reference.html#//apple_ref/occ/instm/UITableView/indexPathForSelectedRowを参照してください。

于 2012-08-09T05:17:17.770 に答える
6

You don't need a global variable. if you need to track the currently selected row, you can create a member variable (iVar) in the class that is the delegate for the table view callbacks.

That method passes you the indexPath which has the row that was selected. If you want remember that for other function callbacks, then create a property or iVar in that class.

In header:

@interface MyTableViewController : UITableViewController {
    NSInteger _selectedRow;
}

In implementation

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
   _selectedRow = indexPath.row;
}
于 2012-08-09T05:06:18.910 に答える
2

私はこのようにしました...。

NSIndexPath *selectedIndexPath = [table indexPathForSelectedRow];

Indexpathを使用して行を取得しました。

于 2012-08-09T05:15:11.727 に答える
2

編集:NSUserDefaultに保存

このデリゲート メソッドでは、現在選択されている行の追加 int curRowIndex を .h ファイルで取得できます。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
  curRowIndex = indexPath.row
  NSLog(@"Currently Selected Row: %d",curRowIndex);
}
于 2012-08-09T05:07:05.893 に答える
1

If your table contains more that one section then you have to track the section also. For that you have to create an object of NSIndexPath.

@interface MyTableViewController : UITableViewController {
    NSIndexPath *obj_IndexPath;
}

and in implementation file,

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
       obj_IndexPath = indexPath;

       NSLog(@"%d",obj_IndexPath.row);
       NSLog(@"%d",obj_IndexPath.section);

}

and don't forget to release obj_IndexPath in dealloc method

于 2012-08-09T06:03:14.350 に答える
0

私はこれを使用します:

if(indexPath.row == 0){
   // do something...
  }else if(indexPath.row == 1){
   // do something else ...
 }
于 2013-10-03T12:49:36.123 に答える