【问题标题】:Duplicated text in Folder?文件夹中的文本重复?
【发布时间】:2012-11-13 18:47:11
【问题描述】:

我通过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中的内容?

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

谢谢。

【问题讨论】:

    标签: iphone objective-c ios parsing ticker


    【解决方案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];

    【讨论】:

    • @NoahRaissi:嘿,我制作了 JWFolders。如果您对此有任何问题或有任何需要改进的地方,请在 repo 上发布问题,我很乐意为您提供帮助。 :)
    • @sudorm-rf 非常感谢。我很高兴收到像您这样出色的开发人员的来信。你的开源项目对我来说非常有用,太棒了。我遇到了一些问题,但解决了它们:D 但我有一个问题。怎么可能给背景项目这样的 alpha 减少像苹果对他们的文件夹做的那样,视图集中在被点击的文件夹上。是否有可能做到这一点。如果是……怎么办?你有更多像这样的开源项目吗:D?
    • @NoahRaissi:啊,不幸的是,添加这样的东西并不容易。由于我在打开视图之前对其进行了截屏,因此在文件夹关闭之前,对任何视图的 alpha 所做的任何更改都不会显示为已更改。当然,可以通过简单地拆分实际视图本身来解决此问题,但我无法将其推广到一个适用于所有人的库中,因此我不得不做出妥协。而且我确实有一个类似的 3D 滑动库,但我遇到了问题并且从未发布过它。 :)
    • @sudorm-rf 非常感谢您的出色工作和对我的热烈支持:D 很快再见
    猜你喜欢
    • 1970-01-01
    • 2017-12-25
    • 2012-08-20
    • 2019-07-02
    • 2013-04-29
    • 2015-02-19
    • 2014-02-16
    • 1970-01-01
    相关资源
    最近更新 更多