1

プログラムで UIButton を作成し、UIScrollView のサブビューに追加しました。後でコードの別の部分で、ボタンを無効にする必要があります。ただし、ボタンを参照しようとすると、無効になりません。

いくつかのコードを次に示します。

ヘッダ:

UIButton *button1;

主要:

 button1 = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
 [button1 addTarget:self action:@selector(buttonStuff) forControlEvents:UIControlEventTouchUpInside];
 [scrollView addSubview:button1];

button1 を無効にしようとすると:

        NSLog(@"Hidden state: %i", button1.hidden);  //------> returns "0" 
        button1.enabled = NO;
        button1.hidden = YES;
        NSLog(@"Hidden state: %i", button1.hidden);  //------> returns "1", yet is not hidden on screen

注目すべき興味深い点は、ボタンを非表示にする前のコードの最後の部分で、NSLog が 0 (非表示ではない) を返すことです。次に、ボタンを非表示にしようとすると、NSLog は 1 を返します。これは、ボタンが非表示になっていることを示しますが、引き続き画面に完全に表示され、無効にもなりません。私は非常に混乱しています。誰かが私が間違っていることについて私を助けることができますか?

4

2 に答える 2

0

ボタン非表示のコードはバックグラウンド スレッドと呼ばれていますか? UIKit はスレッドセーフではありません。メイン スレッド以外のスレッドで UIKit オブジェクトのプロパティを変更すると、ビジュアル プロパティの更新が表示されない場合や、変更が表示されるまでに長い遅延が発生する場合があります。

を介して、メソッドがメインスレッドで実行されていることを確認できます-performSelectorOnMainThread:withObject:waitUntilDone:

于 2012-05-29T22:45:32.280 に答える
0

メソッドを悪用していますtableView:numberOfRowsInSection:。代わりに、独自のメソッドを作成し、そこから呼び出す必要[self.tableView reloadData];があります。

于 2012-05-30T06:26:39.833 に答える