你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> 貓貓學iOS之ipad開發Popover的調色板應用_popover顯示後其他控件仍然能進行交互

貓貓學iOS之ipad開發Popover的調色板應用_popover顯示後其他控件仍然能進行交互

編輯:IOS開發綜合

 

一:效果

後面的是xcode的控制台
這裡寫圖片描述

二:代碼

ViewController

#import ViewController.h
#import ColorsViewController.h

@interface ViewController () 
- (IBAction)buttonClick:(UIButton *)btn;
@property (nonatomic, weak) UIButton *colorButton;
@property (nonatomic, strong) UIPopoverController *popover;
@property (weak, nonatomic) IBOutlet UIButton *greenButton;

- (IBAction)greenButtonClick;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

}

- (IBAction)greenButtonClick {
    NSLog(@greenButtonClick);
}

- (IBAction)buttonClick:(UIButton *)btn {
    // 0.內容
    ColorsViewController *colors = [[ColorsViewController alloc] init];
    colors.delegate = self;

    // 1.創建
    self.popover = [[UIPopoverController alloc] initWithContentViewController:colors];
    self.popover.delegate = self;

    // 2.顯示
//    [self.popover presentPopoverFromRect:CGRectMake(150, 150, 100, 100) inView:btn.superview permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    [self.popover presentPopoverFromRect:CGRectMake(924, 668, 100, 100) inView:btn.superview permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
//    [self.popover presentPopoverFromRect:btn.bounds inView:btn permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
//    [self.popover presentPopoverFromRect:btn.frame inView:btn.superview permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

    // 3.設置哪裡控件在popover顯示出來的時候,仍舊可以跟用戶進行交互
    self.popover.passthroughViews = @[self.greenButton];

    self.colorButton = btn;
}

#pragma mark - 顏色選擇代理
- (void)colorsViewController:(ColorsViewController *)vc didSelectColor:(UIColor *)color
{
    self.colorButton.backgroundColor = color;

    // 關閉popover
    [self.popover dismissPopoverAnimated:YES];
}

#pragma mark - popover的代理
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
    NSLog(@popover銷毀了);
}
@end

ColorsViewController

#import 
@class ColorsViewController;

@protocol ColorsViewControllerDelegate 

@optional
- (void)colorsViewController:(ColorsViewController *)vc didSelectColor:(UIColor *)color;
@end

@interface ColorsViewController : UITableViewController
@property (nonatomic, weak) id delegate;
@end
#import ColorsViewController.h

@interface ColorsViewController ()

@end

@implementation ColorsViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
}

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

#pragma mark - Table view data source
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 30;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *ID = @cell;
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
    }

    cell.backgroundColor = [UIColor colorWithRed:arc4random_uniform(255)/255.0 green:arc4random_uniform(255)/255.0 blue:arc4random_uniform(255)/255.0 alpha:1.0];

    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ([self.delegate respondsToSelector:@selector(colorsViewController:didSelectColor:)]) {
        UIColor *color = [tableView cellForRowAtIndexPath:indexPath].backgroundColor;
        [self.delegate colorsViewController:self didSelectColor:color];
    }
}
@end

 

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved