1

JWFoldersを介してアプリケーションにフォルダーを作成しました。私の問題は、いくつかのコードを設定して parse.com からいくつかの文字列を取得し、接続がない場合はCLTickerviewにテキストを表示することです。ただし、フォルダーを数回開くと、フォルダーを開くたびにテキストが複製されます。ここにいくつかの画像があります:

初めて開いた後:ここに画像の説明を入力

約5回後:ここに画像の説明を入力

10回後:ここに画像の説明を入力

私のコード:

PFQuery *query = [PFQuery queryWithClassName:@"TestObject"];
[query getObjectInBackgroundWithId:@"object1"
                             block:^(PFObject *textu, NSError *error) {
                                 if (!error) {
                                     // start the tickerview
                                    CLTickerView *ticker = [[CLTickerView alloc] initWithFrame:CGRectMake(0, 35, 320, 35)];
                                    ticker.marqueeStr = [textu objectForKey:@"text"];
                                     ticker.marqueeFont = [UIFont systemFontOfSize:26];


                                     [self.view addSubview:ticker];

                                    // if there's connection

                                 } else {
                                     // Log details of our failure
                                     CLTickerView *ticker = [[CLTickerView alloc] initWithFrame:CGRectMake(0, 35, 320, 35)];
                                     ticker.marqueeStr = @"Keine Internet Verbindung";
                                     ticker.marqueeFont = [UIFont systemFontOfSize:26];

                                     [self.view addSubview:ticker];

                                     //if there's no connection;

                                 }

                             }];

フォルダを閉じた後などに、ティッカービュー内のものを削除する方法はありますか?

誰かに提案や解決策がありますか?

ありがとう。

4

1 に答える 1

1

フォルダーを開くたびに、CLTickerView *tickerこの行を使用してサブビューとしての個別のインスタンスを作成し、ビューに追加しています[self.view addSubview:ticker];。一度だけ追加したい場合は、allocメソッドを繰り返し呼び出さない場所にティッカーを作成する必要があります。

viewDidLoadかそこらで作成し、

CLTickerView *ticker = [[CLTickerView alloc] initWithFrame:CGRectMake(0, 35, 320, 35)];

次に、次のように使用します。

PFQuery *query = [PFQuery queryWithClassName:@"TestObject"];
[query getObjectInBackgroundWithId:@"object1"
                             block:^(PFObject *textu, NSError *error) {
                                 if (!error) {
                                     // start the tickerview

                                     ticker.marqueeStr = [textu objectForKey:@"text"];
                                     ticker.marqueeFont = [UIFont systemFontOfSize:26];
                                     [self.view addSubview:ticker];

                                    // if there's connection

                                 } else {
                                     // Log details of our failure
                                     ticker.marqueeStr = @"Keine Internet Verbindung";
                                     ticker.marqueeFont = [UIFont systemFontOfSize:26];

                                     [self.view addSubview:ticker];

                                     //if there's no connection;

                                 }

                             }];

を呼び出すたびにCLTickerView *ticker = [[CLTickerView alloc] initWithFrame:CGRectMake(0, 35, 320, 35)];、別のコピーが作成され、新しいコピーが作成されると、前のコピーにアクセスできないことに注意してください。

削除したいときはいつでも使用してください[ticker removeFromSuperview];

于 2012-11-13T19:34:36.027 に答える