Nano Hash - криптовалюты, майнинг, программирование

ICarousel View не обновляется

Здравствуйте, я использовал карусель в своем приложении для отображения твитов. Хотя процесс отображения контроллера представления занял много времени, поэтому я использовал GDC, чтобы иметь возможность загрузить контроллер представления, а затем представление карусели для обновления при загрузке твитов.

- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{
    if (!view)
    {
        //load new item view instance from nib
        //control events are bound to view controller in nib file
        view = [[[NSBundle mainBundle] loadNibNamed:@"Empty" owner:self options:nil] lastObject];

        //[self performSelectorInBackground:@selector(loadthetweets) withObject:nil ];
        //[self performSelectorInBackground:@selector(loadfromtheweb:) withObject:nil];
        //[self performSelectorOnMainThread:@selector(loadthetweets) withObject:nil waitUntilDone:YES];


        //[self performSelectorInBackground:@selector(loadthetweets) withObject:nil];
        /*
        NSString *feedname=@"http://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=shoplog1&count=20";

        NSURL *feedURL =[NSURL URLWithString:feedname];

        //The JSON Part
        NSData *data =[NSData dataWithContentsOfURL:feedURL];

        NSError* error;
        _tweets= [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves
                                                   error:&error];



        maintext=[[_tweets objectAtIndex:index]objectForKey:@"text"];
        NSArray *piecesOfOriginalString = [maintext componentsSeparatedByString:@"http"];
        NSString *firstetxt=[piecesOfOriginalString objectAtIndex:0];
        NSLog(@"The first text: %@",firstetxt);
        NSString *link=[@"http" stringByAppendingString:[piecesOfOriginalString objectAtIndex:1]];
        linktogo=[NSURL URLWithString:link];
        text.text=firstetxt;

        NSLog(@"The link text: %@",link);
        //NSDictionary *new =[[[tweets objectAtIndex:index]objectForKey:@"entities"]objectForKey:@"urls"];
        NSDictionary *retweeted=[[_tweets objectAtIndex:index]objectForKey:@"retweeted_status"];
        if (retweeted) {
            NSString *urlll=[[[[_tweets objectAtIndex:index]objectForKey:@"retweeted_status"]objectForKey:@"user"]objectForKey:@"profile_image_url"];
            NSURL *iiii=[NSURL URLWithString:urlll];
            usericon.image=[UIImage imageWithData:[NSData dataWithContentsOfURL:iiii]];
            username.text=[[[[_tweets objectAtIndex:index]objectForKey:@"retweeted_status"]objectForKey:@"user"]objectForKey:@"screen_name"];
        }else{
            username.text=@"Shoplog";
            usericon.image=[UIImage imageNamed:@"MyIcon copy_57.png"];
        }
         */
         [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
        [Provideractivity startAnimating];
        [ContentActivity startAnimating];

        dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

        dispatch_async(concurrentQueue, ^{

            [self loadthetweets];
            //[self loadfromtheweb:[NSNumber numberWithUnsignedInt:index ]];
            dispatch_async(dispatch_get_main_queue(), ^{
                //[self loadfromtheweb:[NSNumber numberWithUnsignedInt:index ]];
                maintext=[[_tweets objectAtIndex:index]objectForKey:@"text"];
                NSArray *piecesOfOriginalString = [maintext componentsSeparatedByString:@"http"];
                NSString *firstetxt=[piecesOfOriginalString objectAtIndex:0];
                NSLog(@"The first text: %@",firstetxt);
                NSString *link=[@"http" stringByAppendingString:[piecesOfOriginalString objectAtIndex:1]];
                linktogo=[NSURL URLWithString:link];
                text.text=firstetxt;

                NSLog(@"The link text: %@",link);
                //NSDictionary *new =[[[tweets objectAtIndex:index]objectForKey:@"entities"]objectForKey:@"urls"];
                NSDictionary *retweeted=[[_tweets objectAtIndex:index]objectForKey:@"retweeted_status"];
                if (retweeted) {
                    NSString *urlll=[[[[_tweets objectAtIndex:index]objectForKey:@"retweeted_status"]objectForKey:@"user"]objectForKey:@"profile_image_url"];
                    username.text=[[[[_tweets objectAtIndex:index]objectForKey:@"retweeted_status"]objectForKey:@"user"]objectForKey:@"screen_name"];
                    NSURL *iiii=[NSURL URLWithString:urlll];
                    usericon.image=[UIImage imageWithData:[NSData dataWithContentsOfURL:iiii]];

                }else{
                    username.text=@"Shoplog";
                    usericon.image=[UIImage imageNamed:@"MyIcon copy_57.png"];
                }

                [ContentActivity stopAnimating];
                [ContentActivity hidesWhenStopped];
                [Provideractivity stopAnimating];
                [Provideractivity hidesWhenStopped];



                 [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
            });
        });



    }
    return view;

}

Что здесь происходит неправильно, так это то, что 11-й элемент карусели обновляется правильно, остальные пустые, и я понятия не имею, почему.

Может кто-нибудь помочь?


Ответы:


1

В вашем блоке if (!view) {...} создайте только представление, не настраивайте его. Настройте представление после и вне этого оператора if. Представление, которое передается в - (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view, может быть уже создано, и если это так, оно не попадет в ваш блок if, и твит никогда не будет загружен, потому что if никогда не будет настроен.

29.03.2013

2

Спасибо за Ваш ответ ! , Хотя мне удалось поместить загрузку твитов в функцию вне (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view и вызвать ее из функции initfromnib контроллера представления, сейчас это занимает меньше времени!

01.05.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..