/RPicker

Simple and Easy-to-Use iOS Swift Date and Options Picker

Primary LanguageSwiftMIT LicenseMIT

RPicker

Elegant and Easy-to-Use Swift Date and Options Picker. Master branch has the latest code and compatible with Swift 5. Check other branches for various Swift versions

What's New

  • iOS 14 Support with various UIDatePickerStyle e.g. Wheel, Inline, Compact
  • Dark Mode and Light Mode Support
  • Objective C Support [See How to use in Objective C Heading of this file]

Alt text Alt text Alt text Alt text

How to use

Add RPicker.swift into your project. You are ready to go!

// Simple Date Picker
    RPicker.selectDate {[weak self] (selectedDate) in
        // TODO: Your implementation for date
        self?.outputLabel.text = selectedDate.dateString("MMM-dd-YYYY")
    }
    
    // Simple Date Picker with title
    RPicker.selectDate(title: "Select Date", didSelectDate: {[weak self] (selectedDate) in
        // TODO: Your implementation for date
        self?.outputLabel.text = selectedDate.dateString("MMM-dd-YYYY")
    })
    
    // Simple Time Picker
    RPicker.selectDate(title: "Select Time", cancelText: "Cancel", datePickerMode: .time, didSelectDate: { [weak self](selectedDate) in
        // TODO: Your implementation for date
        self?.outputLabel.text = selectedDate.dateString("hh:mm a")
    })
    
    // Simple Date and Time Picker
    RPicker.selectDate(title: "Select Date & Time", cancelText: "Cancel", datePickerMode: .dateAndTime, minDate: Date(), maxDate: Date().dateByAddingYears(5), didSelectDate: {[weak self] (selectedDate) in
        // TODO: Your implementation for date
        self?.outputLabel.text = selectedDate.dateString()
    })
    
    //Show date picker with min and max date
    RPicker.selectDate(title: "Select Date", minDate: Date(), maxDate: Date().dateByAddingYears(5), didSelectDate: {[weak self] (selectedDate) in
        // TODO: Your implementation for date
        self?.outputLabel.text = selectedDate.dateString("MMM-dd-YYYY")
    })
    
    // Simple Option Picker
    let dummyList = ["Apple", "Orange", "Banana", "Mango", "Bilberry", "Blackberry"]

    RPicker.selectOption(dataArray: dummyList) {[weak self] (selctedText, atIndex) in
        // TODO: Your implementation for selection
        self?.outputLabel.text = selctedText + " selcted at \(atIndex)"
    }
    
    // Simple Option Picker with selected index
    let dummyList = ["Apple", "Orange", "Banana", "Mango"]
    RPicker.selectOption(title: "Select", cancelText: "Cancel", dataArray: dummyList, selectedIndex: 2) {[weak self] (selctedText, atIndex) in
        // TODO: Your implementation for selection
        self?.outputLabel.text = selctedText + " selcted at \(atIndex)"
    }
    
    //Date picker with pre selected date
    let selectedDate = Date().dateByAddingYears(-6)
    let maxDate = Date()
    let minDate = Date().dateByAddingYears(-12)
    
    RPicker.selectDate(title: "Select", selectedDate: selectedDate, minDate: minDate, maxDate: maxDate) { [weak self] (selectedDate) in
        // TODO: Your implementation for date
        self?.outputLabel.text = selectedDate.dateString("MMM-dd-YYYY")
        
    }
    
   //Show date picker iOS 14 -> Inline mode
        RPicker.selectDate(title: "Select Date", cancelText: "Cancel", datePickerMode: .date, style: .Inline, didSelectDate: {[weak self] (selectedDate) in
            // TODO: Your implementation for date
            self?.outputLabel.text = selectedDate.dateString("MMM-dd-YYYY")
        })
        
        //Show time picker iOS 14 -> Inline mode
        RPicker.selectDate(title: "Select Time", cancelText: "Cancel", datePickerMode: .time, style: .Inline, didSelectDate: {[weak self] (selectedDate) in
            // TODO: Your implementation for date
            self?.outputLabel.text = selectedDate.dateString("hh:mm a")
        })
        
        //Show date and time picker iOS 14 -> Inline mode
        RPicker.selectDate(title: "Select Date and Time", cancelText: "Cancel", datePickerMode: .dateAndTime, style: .Inline, didSelectDate: {[weak self] (selectedDate) in
            // TODO: Your implementation for date
            self?.outputLabel.text = selectedDate.dateString()
        })
        
        //Show date and time picker iOS 14 -> Compact mode
        RPicker.selectDate(title: "Select Date and Time", cancelText: "Cancel", datePickerMode: .dateAndTime, style: .Compact, didSelectDate: {[weak self] (selectedDate) in
            // TODO: Your implementation for date
            self?.outputLabel.text = selectedDate.dateString()
        })

How to use in Objective C

Date Picker

[RPicker selectDateWithTitle:@"Select" cancelText:@"Cancel" doneText:@"Done" datePickerMode:UIDatePickerModeDate selectedDate:dateValue minDate:nil maxDate:nil style: RDatePickerStyleWheel didSelectDate:^(NSDate * _Nonnull date) {
   
}];

Option Picker

     NSArray *list = @[@"Banana", @"Apple", @"Orange"];
     
     [RPicker pickOptionWithTitle:@"Select" cancelText:@"Cancel" doneText:@"Done" dataArray:list selectedIndex:[NSNumber numberWithInt:2] didSelectValue:^(NSString * _Nonnull value, NSInteger index) {
        
     }];

Author

Communication

  • If you found a bug, open an issue.
  • If you want to contribute, submit a pull request.

License

RPicker is available under the MIT license. See the LICENSE file for more info.

Other Libraries

  • RBiometric:- Elegant and Easy-to-Use library for iOS Biometric (TouchId and FaceId) authentication.
  • RFirebaseMessaging:- Project provides basic idea and approach for building small social media application using firebase and implementing chat using Firebase.
  • RBeacon:- Sample project for turning android device into a Beacon device. App can work as both broadcaster and receiver.
  • RPdfGenerator:- A sample project to generate PDF file from data using itextpdf/itext7 library.