Перекрестный просмотр текста uilabel на iOS

#ios #iphone #objective-c

#iOS #iPhone #objective-c

Вопрос:

Я делаю приложения с обратным отсчетом с помощью раскадровки и навигационного контроллера с 2 view controller

Контроллер «A» имеет UILABEL, показывающий, сколько дней

а контроллер «B» — это средство выбора даты с кнопкой, ниже приведен код от контроллера «B»

 - (IBAction)doneSetting:(id)sender
{
//Remove the time component from the datePicker.  We care only about the date
NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];
NSUInteger preservedComponents = (NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit);
self.datePicker.date = [calendar dateFromComponents:[calendar components:preservedComponents fromDate:self.datePicker.date]];

//Set up a timer that calls the updateTime method every second to update the label
NSTimer *timer;
timer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                         target:self
                                       selector:@selector(updateTime)
                                       userInfo:nil
                                        repeats:YES];

}

-(void)updateTime
{
//Get the time left until the specified date
NSInteger ti = ((NSInteger)[self.datePicker.date timeIntervalSinceNow]);
NSInteger days = (ti / 86400);


//Update the lable with the remaining time
self.countdownLabel.text = [NSString stringWithFormat:@"i days", days];

}
  

как мне заставить countdownlabel.text отображаться на контроллере «A»?

Заранее спасибо

Комментарии:

1. Какова связь между контроллером «A» и контроллером «B»?

2. Вы имеете в виду отношение к раскадровке? Нет связи, я использую self.NavigationController pushViewController для переключения между обоими видами.. Или вы имеете в виду отношение к функции, контроллер «B» — это представление настроек для установки даты назначения, а контроллер «A» будет отображением количества дней до даты назначения, установленной в «B»

3. Какой контроллер нажимает на другой контроллер?

4. Контроллер «A» нажимной контроллер «B»

5. Как вы переходите от B к A? с помощью popViewController??

Ответ №1:

Попробуйте это: //======= в контроллере B ===== Объявить свойство в контроллере «B» в файле .h:

 @property (nonatomic, copy) void (^LabelTextUpdated)(NSString *textValue);
  

и in .m из B в вашем исходном коде:

 -(void)updateTime
{
//Get the time left until the specified date
NSInteger ti = ((NSInteger)[self.datePicker.date timeIntervalSinceNow]);
NSInteger days = (ti / 86400);


//Update the lable with the remaining time
self.countdownLabel.text = [NSString stringWithFormat:@"i days", days];

  if (_LabelTextUpdated) {
        _LabelTextUpdated(@"Value");
    }
}
  

//========== И в контроллере «A» ===========
откуда вы нажимаете на контроллер «B», напишите это:

   B *object_B = YOUR_OBJECT_OF_B;
    [object_B setLabelTextUpdated:^(NSString *textValue) {
        //Here you will receive updated text 
        NSLog(@"Your Text is %@", textValue);
    }];

   //Push your B controller.