2013-11-30 3 views
0

Мое универсальное приложение iOS7 прекрасно работает, за исключением начального viewController для iPhone не обновляется с новой информацией. IPad обновляется корректно. Они оба используют один и тот же точный код, но отдельные раскадровки. Оба значения viewControllers имеют значение «initial». Если я закрою приложение iPhone и перезагрузите его, он будет корректно обновляться. Это должно быть что-то очевидное, но я не могу его найти. Пожалуйста помоги.Почему первоначальное обновление UIViewController для iPad, но не iPhone?

Вот подклассы UIViewController для обоих идиомы:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIApplication *application = [UIApplication sharedApplication]; 
    application.applicationIconBadgeNumber = 0; 

    self.thoughtLabel.layer.cornerRadius = 6.0f; 

    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(preferredContentSizeChanged:) name:UIContentSizeCategoryDidChangeNotification object:nil]; 

    self.canDisplayBannerAds = YES; 

    [self performSelector:@selector(retrieveFromParse)]; 
} 

-(UIStatusBarStyle)preferredStatusBarStyle 
{ 
    return UIStatusBarStyleLightContent; 
} 

- (void)preferredContentSizeChanged:(NSNotification *) notification 
{ 
    self.thoughtLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline]; 
} 
- (void)retrieveFromParse 
{ 
    MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
    hud.labelText = @"Loading ..."; 

    NSCalendar *calendar = [NSCalendar currentCalendar]; 
    [calendar setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]]; 
    NSDateComponents *components = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit) fromDate:[NSDate date]]; 
    [components setHour:0]; 
    [components setMinute:0]; 
    NSDate *startTime = [calendar dateFromComponents:components]; 
    [components setHour:23]; 
    [components setMinute:59]; 
    NSDate *endTime = [calendar dateFromComponents:components]; 

    PFQuery *query = [PFQuery queryWithClassName:@"Content"]; 
    [query whereKey:@"date" greaterThanOrEqualTo:startTime]; 
    [query whereKey:@"date" lessThanOrEqualTo:endTime]; 
    NSArray *objects = [query findObjects]; 

    PFObject *object = [objects objectAtIndex:0]; 
    self.thought = [object objectForKey:@"thought"]; 
    self.author = [object objectForKey:@"author"]; 

    PFFile *image = [object objectForKey:@"image"]; 
    NSData *imageData = [image getData]; 
    _image = [UIImage imageWithData:imageData]; 

     NSString *thoughtFormatted = [NSString stringWithFormat:@"%@\n\n-- ",_thought]; 
     _thoughtAndAuthor = [thoughtFormatted stringByAppendingString:_author]; 
     self.imageView.image = _image; 
     UIFont* font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline]; 
     UIColor* textColor = [UIColor colorWithRed:0.175f green:0.458f blue:0.831f alpha:1.0f]; 
     NSDictionary *attrs = @{NSForegroundColorAttributeName : textColor, NSFontAttributeName : font, NSTextEffectAttributeName: NSTextEffectLetterpressStyle}; 
     NSAttributedString* attrString = [[NSAttributedString alloc] initWithString:_thoughtAndAuthor attributes:attrs]; 
     self.thoughtLabel.attributedText = attrString; 
     [MBProgressHUD hideHUDForView:self.view animated:YES]; 
} 
+0

«не обновляется с новой информацией» не выглядит хорошо объясненным вопросом разработчика. Не возражаете ли вы показать нам какой-то код? –

+0

Я добавил код. – user2490500

+0

С каким методом у вас есть эта проблема? Это метод retrieveFromParse не вызывает? Можете ли вы добавить NSLog для просмотраDidLoad и посмотреть, как он называется на iPhone. Вы также можете заменить строку [self performSelector: @selector (retrieveFromParse)]; с [self retrieveFromParse]; – Greg

ответ

0

Проблема заключается в том, что ваше приложение не загружается в UIView каждый раз, когда ваше приложение становится активным только тогда, когда его первоначально нагрузок.

Добавить наблюдателя в метод viewDidLoad, чтобы вы могли получать обновления при начальной загрузке и когда приложение становится активным.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(retrieveFromParse) name:UIApplicationDidBecomeActiveNotification object:nil]; 
0

Я думаю, вы должны поместить код для извлечения данных внутри viewWillAppear так каждый раз, когда ваши взгляды появляются он будет выполнять следующее.

+0

Хорошо, я попробую, хотя я не понимаю, почему это отличается для iPhone и iPad с тем же кодом. – user2490500

Смежные вопросы