2012-01-22 9 views
4

ユーザーが閲覧するテーブルがあります。ユーザーがデバイスを揺すると、ランダムな行を選択する必要があります。これはどうすればいいですか?テーブル内の行をプログラムで選択する方法

私は振りジェスチャーを認識していますが、リストの数を超えないランダムな整数を作成できますが、その行をテーブルで強調表示するための正しいコードを見つけることができません。

は、Appleのドキュメントでは、私が見つかりました:

NSIndexPath *rowToSelect; // assume this exists and is set properly 
UITableView *myTableView; // assume this exists 

[myTableView selectRowAtIndexPath:rowToSelect animated:YES scrollPosition:UITableViewScrollPositionNone; 
[myTableView scrollToRowAtIndexPath:rowToSelect atScrollPosition:UITableViewScrollPositionNon animate:YES]; 

が、私はそれが働いて得ることができません。私はUITableView *myTableViewを持っています。私はrowToSelectとしてランダム化された整数を使用しました。

+1

ようこそ:私は次の行をコメントし

[eenTabelView selectRowAtIndexPath:scrollIndexPath animated:NO scrollPosition:UITableViewScrollPositionNone]; 

:私は次の行を追加

NSIndexPath *scrollIndexPath = [NSIndexPath indexPathForRow:randomRij inSection:0]; 

:私は、次の行を保持しました! FAQを読んで、送信ボタンを押す前に投稿のコードの書式を確認してください。 –

+1

あなたが提供したコードが動作しない(インデックスパスが正しいと仮定した)唯一の理由は、テーブルビューがnilであることです。 –

+1

これは、実際のコードで誤字が訂正されていることを前提としています。 –

答えて

5

これは、私はそれが働いて得た方法です。 StackOverflowのに

//[[self eenTabelView] scrollToRowAtIndexPath:scrollIndexPath atScrollPosition:UITableViewScrollPositionNone animated:NO]; 
0

重要なルール:すべてのUIの変更は、メインスレッドで行う必要があります。 すでにメインスレッドOR(より正確バリアント)でそれを実行する別の方法にすべてのUIの変更を抽出し、メインスレッドでそれを呼び出すために、あなたのコードの前に

if (![NSThread isMainThread]) 
{ 
    [self performSelectorOnMainThread:_cmd withObject:(%YOUR_OBJECT_TAKEN_IN_THIS_SELECTOR) waitUntilDone:Yes]; 
} 

を追加します。

例:

-(void)yourSelector 
{ 
… 
    UI changes 
… 
} 

-(IBOutlet)yourAction 
{ 
    [self performSelectorOnMainThread:@selector(yourSelector) withObject:nil waitUntilDone:Yes]; 
} 
+1

それは彼がやっていることとは関係がありません。テーブルはnilでなければなりません。 –

+0

なぜ関連性がないのですか?彼はランダムな行を生成し、それを選択したい。もしテーブルが無ければ、何かを選択することは不可能です:) – OdNairy

+0

良い、それはいくつかの関連性があります:)しかし、このメソッドはあまりにも複雑です。メインスレッドから 'yourSelector'を呼び出してください。 –

関連する問題