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;

                                 }

                             }];

有没有办法在文件夹关闭后删除tickerview中的东西或类似的东西?

有没有人给我建议或解决方案?

谢谢。

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 回答