1 Feb 2017

Simple Picker View Code...


Simple Picker View Code...




#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UIPickerViewDelegate,UIPickerViewDataSource>

@property (weak, nonatomic) IBOutlet UITextField *employeeName;

@property (weak, nonatomic) IBOutlet UITextField *employeeDOB;
@property (weak, nonatomic) IBOutlet UITextField *employeeSalary;
@property (weak, nonatomic) IBOutlet UIPickerView *employeeStatusPicker;

@property (weak, nonatomic) IBOutlet UILabel *statusLabel;

@end


#import "ViewController.h"

@interface ViewController ()
{
    NSArray *_pickerData;
}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    // Initialize Data
    _pickerData = @[@"Active", @"InActive",@"New Entry"];
    
    // Connect data
    self.employeeStatusPicker.dataSource = self;
    self.employeeStatusPicker.delegate = self;
}

// The number of columns of data
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return 1;
}

// The number of rows of data
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    return _pickerData.count;
}

//// The data to return for the row and component (column) that's being passed in
//- (NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
//{
//    return _pickerData[row];
//}

// Catpure the picker view selection
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    // This method is triggered whenever the user makes a change to the picker selection.
    // The parameter named row and component represents what was selected.
    
    _statusLabel.text = _pickerData[row];
}

- (UIView *)pickerView:(UIPickerView *)pickerView

            viewForRow:(NSInteger)row

          forComponent:(NSInteger)component

           reusingView:(UIView *)view {
    
    UILabel *pickerLabel = (UILabel *)view;
    
    if (pickerLabel == nil) {
        //label size
        CGRect frame = CGRectMake(0.0, 0.0, 70, 30);
        
        pickerLabel = [[UILabel alloc] initWithFrame:frame];
        [pickerLabel setBackgroundColor:[UIColor clearColor]];
        //here you can play with fonts
        [pickerLabel setFont:[UIFont fontWithName:@"Times New Roman" size:14.0]];
        
        [pickerLabel setTextColor:[UIColor redColor]];
        
    }
    //picker view array is the datasource
    [pickerLabel setText:[_pickerData objectAtIndex:row]];
    
    return pickerLabel;

}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end


19 Jan 2017

PageViewController With Custom UIPageControl Full Code...



PageViewController With Custom UIPageControl Full Code...

IN STORYBOARD:

add page control to ViewController and add one pageViewController with storyboard id pageContainer & 5 viewControllers with storyboard id's Page1 Page2 Page3 Page4 Page5...

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UIPageViewControllerDelegateUIPageViewControllerDataSource>

@property (weaknonatomicIBOutlet UIPageControl *pageControl;




@end


#import "ViewController.h"
#import "Page3.h"

@interface ViewController () 

@property (nonatomicstrongUIPageViewController *pageContainer;
@property (nonatomicstrongNSArray *pages;
@property NSUInteger currentindex;
@property NSUInteger pendingIndex;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
   
    // Setup the pages
    
    UIViewController *page1 = [self.storyboard instantiateViewControllerWithIdentifier:@"page1"];
    UIViewController *page2 = [self.storyboard instantiateViewControllerWithIdentifier:@"page2"];
    UIViewController *page3 = [self.storyboard instantiateViewControllerWithIdentifier:@"page3"];
    UIViewController *page4 = [self.storyboard instantiateViewControllerWithIdentifier:@"page4"];
    UIViewController *page5 = [self.storyboard instantiateViewControllerWithIdentifier:@"page5"];
    
    _pages = [[NSArray alloc]initWithObjects:page1,page2,page3,page4,page5, nil];
    
    // Create the page container
    
    _pageContainer = [[UIPageViewController alloc]initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
    _pageContainer.delegate = self;
    _pageContainer.dataSource = self;
    
    NSArray *startingViewControllers =[NSArray arrayWithObject:page1];
    [_pageContainer setViewControllers:startingViewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
    
    // Add it to the view
    [self.view addSubview:_pageContainer.view];
    
    // Configure our custom pageControl
    [self.view bringSubviewToFront:_pageControl];
    _pageControl.numberOfPages = _pages.count;
    _pageControl.currentPage = 0;
}

#pragma mark - UIPageViewController delegates

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
    
    _currentindex = [_pages  indexOfObject:viewController];
    if (_currentindex == 0) {
        return nil;
    }
    NSUInteger previousIndex = ((_currentindex - 1) % _pages.count);
    return  _pages[previousIndex];
        
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
    
    _currentindex = [_pages indexOfObject:viewController];
    if (_currentindex == _pages.count-1) {
        return nil;
    }
    NSUInteger nextIndex = ((_currentindex + 1) % _pages.count);
    return _pages[nextIndex];
    
}
- (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray<UIViewController *> *)pendingViewControllers NS_AVAILABLE_IOS(6_0); {
    
    _pendingIndex = [_pages indexOfObject:pendingViewControllers.firstObject];

}

- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray<UIViewController *> *)previousViewControllers transitionCompleted:(BOOL)completed;
{
    if (completed) {
        _currentindex = _pendingIndex;
        if ( _currentindex) {
            _pageControl.currentPage = _currentindex;
        }
    }
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

Recent Posts

Codable demo

Link: https://www.dropbox.com/s/kw7c1kgv1628bh7/codableDemo.zip?dl=0