2016-01-01 2 views
1

У меня есть некоторые 6 UILabels которые покажут дату, как показано ниже:отключить кнопку

    Jan,2016 (label) 
    (button) < **27Dec 28Dec 29Dec 30Dec 31Dec 1Jan** >(Button) 

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

Вот мой полный код:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    firstdate = [NSDate date]; 
    firstdate = [NSDate dateWithTimeInterval:-(5*86400) sinceDate:firstdate]; 
    [self dateChange]; 
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"MMM,yyyy"]; dateLabel.text = [dateFormat stringFromDate:[NSDate date]]; 
    dateLabel.text = [dateFormat stringFromDate: firstdate]; 
} 

-(void)dateChange 
{ 
    NSArray *labelArray = @[flabel, slabel, tlabel, folabel, fivlabel,sixlabel]; 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    NSCalendar *calendar = [NSCalendar currentCalendar]; 
    dateFormatter.dateFormat = @"ddMMM"; 
    for (NSInteger i = 0; i < 6; ++i) { 
     NSDate *nextDate = [calendar dateByAddingUnit: NSCalendarUnitDay value:i toDate:firstdate options:nil]; 
     UILabel *label = (UILabel *)labelArray[i]; 
     label.text = [dateFormatter stringFromDate:nextDate]; 

     if (i==5) { 
      [email protected]"MMM,yyyy"; 
      dateLabel.text = [[dateFormatter stringFromDate:nextDate] capitalizedString]; 
     } 
    } 
} 
- (IBAction)calRight:(id)sender { 
    firstdate = [NSDate dateWithTimeInterval:86400 sinceDate:firstdate]; 
    [self dateChange]; 
} 

- (IBAction)calLeft:(id)sender { 

    firstdate = [NSDate dateWithTimeInterval:-86400 sinceDate:firstdate]; 
    [self dateChange]; 
} 

Так что мне нужно в примере .Для нравится, говорит - сегодня Jan 1 .so, если пользователь откройте мое приложение, он увидит Jan 1 по адресу last date, а затем предыдущий december date сзади, как я упоминал выше.

В таком случае, если пользователь на current date означает, что Jan1 означает, что мой Rightbutton должен быть disabled. В то же время, когда пользователь использует left button пойти november month MENAS тогда мой right button должен быть enabled

Только мой rightbutton должен быть disabled, когда пользователь в current date. Пожалуйста, помогите мне решить. У меня есть идея, что!

if (some condition) 
    [leftBtn setEnabled:NO]; 
else 
    [leftBtn setEnabled:YES]; 

Но я не уверен относительно состояния и кода.

+1

** Никогда ** использовать 86400 секунд, чтобы сделать дату математику. Используйте соответствующие методы 'NSCalendar' – vadian

ответ

1

Измените метод dateChange с сильфоном кодом, а также btnRight ваша правая кнопки стороны так изменить имя все, что вы дать для него.

-(void)dateChange 
{ 
    NSArray *labelArray = @[flabel, slabel, tlabel, folabel, fivlabel,sixlabel]; 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    NSCalendar *calendar = [NSCalendar currentCalendar]; 
    dateFormatter.dateFormat = @"ddMMM"; 
    for (NSInteger i = 0; i < labelArray.count; ++i) { 

     NSDate *nextDate = [calendar dateByAddingUnit:NSCalendarUnitDay value:i toDate:firstdate options:nil]; 
     UILabel *label = (UILabel *)labelArray[i]; 
     label.text = [dateFormatter stringFromDate:nextDate]; 

     if (i==(labelArray.count-1)) { 
      [email protected]"MMM,yyyy"; 
      dateLabel.text = [[dateFormatter stringFromDate:nextDate] capitalizedString]; 

      NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
      [dateFormat setDateFormat:@"yyyy-MM-dd"]; 

      if ([[dateFormat stringFromDate:nextDate] isEqualToString:[dateFormat stringFromDate:[NSDate date]]]) 
       btnRight.enabled = false; //It's the same day 
      else 
       btnRight.enabled = true; 
     } 
    } 
} 
+0

. Не отключается. Я перехожу к' 2 января'. Так что, по моему вопросу, его следует отключить – user5735383

+0

А также мой месячный ярлык также не работает хорошо по вашему решению bro – user5735383

+0

ТАКЖЕ мой ярлык месяца показывает ошибочно ..Когда я впервые открываю, хотя сегодняшняя дата - 'JAN1' его показ' Декабрь 2015 года – user5735383

0
NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];//You Can Change Date Format 
    NSString *strDate=[dateFormatter stringFromDate:[NSDate date]]; 

    [btnYourButton setEnabled:([strDate isEqualToString:txtYourTextFieldDate.text])?NO:YES]; 
+0

Моя кнопка работает, теперь' Jan1'. Поэтому, если нажать кнопку «Влево», вы перейдете на «Jan2». На самом деле, я не должен идти в 'Jan2' – user5735383

0

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

rightButton.enabled = ![[NSCalendar currentCalendar] isDateInToday:aDate]; 

Важное примечание:

Никогда не делать даты математики с помощью 86400 константы

Считает, что в тот день, когда летнее время меняется день не имеет 86400 секунд.

Например вместо

firstdate = [NSDate date]; 
firstdate = [NSDate dateWithTimeInterval:-(5*86400) sinceDate:firstdate]; 

написать

firstdate = [[NSCalendar currentCalendar] dateByAddingUnit:NSCalendarUnitDay value:-5 toDate:[NSDate date] options:nil]; 
+0

Моя кнопка работает, теперь 'Jan1'. Поэтому, если нажать кнопку «Влево», вы перейдете на Jan2. На самом деле я не должен был идти в январе 2 – user5735383

+0

ок около 86400 .. Но о моем вопросе. ?? Моя кнопка еще не отключена – user5735383

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