2012-01-12 10 views
0

iPadのSplitView Appを作成しています。ここでは、左に(横向き)、DetailViewを右に(何も新しいものはありません。表のセルをクリックすると、detailViewにセルの詳細が表示されます。 私はdetialView上のボタンを次のセルに移動し、ボタンを押して前のセルに移動します。iPadでDetailViewからボタンをクリックするとdidSelectRowAtIndexPathが呼び出されます

私の問題は、ボタンをクリックするたびに左側のテーブルビューでセルの選択を変更して、ユーザーが現在セルを知っていることです。

tableView:didSelectRowAtIndexPath:メソッドを呼び出してみましたが、NSIndexPath権限を設定できないようです(次のセルの番号を示す整数を送信したい)。ここで

はselectRowAtIndexPathを呼び出すためにtrzingのコードです:メソッド:

iPadHelloWorldAppDelegateはAppDelegateです。 masterViewControllerは、その上にテーブルがあるマスタコントローラです。

// method to set the image for the previous letter 
-(IBAction)previousLetter{ 
    iPadHelloWorldAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 

    NSLog(@"IndexOfImage equals: %@", appDelegate.indexOfImage); 

    int number = [[appDelegate.indexOfImage substringFromIndex:5] intValue]; 

    NSString *imageName = [NSString stringWithFormat:@"image%@.png",[NSString stringWithFormat:@"%d", number-1]]; 
    [self.letterImageView setImage:[UIImage imageNamed:imageName]]; 
    NSLog(@"Image name: %@", imageName); 

    appDelegate.indexOfImage = [imageName substringToIndex:6];  

    NSIndexPath *currentPath = appDelegate.currentPath; 
    NSIndexPath *nextPath = [NSIndexPath indexPathForRow:currentPath.row-1 inSection:currentPath.section]; 

    [masterViewController.tableView selectRowAtIndexPath:nextPath animated:YES scrollPosition:UITableViewScrollPositionNone];  

    NSLog(@"currentPath: %@", currentPath);  
    appDelegate.currentPath = nextPath;   
    NSLog(@"nextPath: %@", nextPath);  

助けてください...

+0

[ここ](http://stackoverflow.com/questions/2035061/select-tableview-row-programmatically)があなたの問題に対処しています。あなたが探しているものと正確に一致するはずです。 – UPT

+0

こんにちは、答えをありがとうが、私はすでにそれを試して、selectRowAtIndexPathは、他の男のためにしたように行を強調表示されません。どちらの答えを意味しますか?最初の 'doSomeThing'メソッド? didSelectRowAtIndexは私のために働いていません... – iPhoneNoob

答えて

0

"のtableView:didSelectRowAtIndexPath:" デリゲートメソッドです。あなたはそれを直接呼び出すべきではありません。代わりに、 "selectRowAtIndexPath:animated:scrollPosition:"を呼び出してみてください。

+0

Mark、ありがとう、私はそれを試してみて、それがどのように行ったか書きます... – iPhoneNoob

+0

は、selectRowAtIndexPathのNSIndexPathを設定する方法を教えてくれますか?私はその権利を得ることができない。 – iPhoneNoob

+0

最も簡単な方法は[NSIndexPath indexPathForRow:inSection:] –

1

これはうまくいくと思います。あなたの前方ボタンの場合は、このコードを使用してください。

NSIndexPath *currentPath = [tableView indexPathForSelectedRow]; 
NSIndexPath *nextPath = [NSIndexPath indexPathForRow:currentPath.row+1 inSection:currentPath.section]; 
[tableView selectRowAtIndexPath:nextPath animated:YES scrollPosition:UITableViewScrollPositionMiddle]; 

[戻る]ボタンでは、-1を+1に置き換えてください。

indexPathForRow:inSection:メソッドについては、NSIndexPath UIKit Additions documentationを参照してください。

+0

HI!答えをありがとう。私はあなたが書いたことをしました。 currentPathを取得してnextPathを増やすことはできますが、それでもセルは選択されません。 – iPhoneNoob

+0

私はあなたがおそらく説明している私の最後の行(修正)に誤字がありました。元の質問にコードを投稿することができれば(フォーマットされたコードを表示するために)役立つかもしれません。適切な名前でtableViewオブジェクトを参照していることを確認してください。それは私がいくつかのコードを見ずに考えることができるすべてです。 – Jim

+0

これは試していないので推測ですが、self.tableView.allowsSelectionDuringEditing = YESを設定してみてください。 (あなたのケースに適したtableViewへの正しい参照を使用してください)。ini編集モードでは、プログラムでセルを選択している場合でも、これが必要な場合があります。 – Jim

関連する問題