ios - 禁用按钮

标签 ios objective-c nsdate nscalendar

我有 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) {
            dateFormatter.dateFormat=@"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];
}

所以我需要什么。例如,就像说的那样 - 今天是 1 月 1 日。所以如果用户打开我的应用程序,他们将在 最后日期看到 1 月 1 日 后跟前面的 december date 就像我上面提到的那样。

所以在这种情况下,如果 current date 的用户意味着 Jan1 意味着那么我的 Rightbutton 应该被 disabled .同时,当用户使用 left button 进入 november month 菜单时,我的 right button 应该 enabled

当用户处于当前日期时,只有我的右键应该被禁用。 请帮我解决我有一个想法!

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

但是我不确定条件和代码。

最佳答案

用下面的代码改变你的方法 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)) {
            dateFormatter.dateFormat=@"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;
        }
    }
}

关于ios - 禁用按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34553900/

相关文章:

iphone - 如何使用 http/ftp 将文件上传到 iphone/ipad? (例如 ifile、goodreader)

ios 以毫秒为单位向 UITableView 添加数据

objective-c - 如何在 iOS 上将计时器与服务器同步

ios - 如何使用Objective-C从纯文本远程文件中读取内容

ios - 将获取的结果 NSDate 划分为每一天使用核心数据的部分

ios - 使用 PhotoKit 在文件夹中创建子文件夹

ios - 在 UIWebView 中仅加载网站上的 div

iOS 运行时 : Use Case

iphone - 比较 Objective-c 中的 NSDates

swift - NSDate() 或 Date() 显示错误的时间