zoukankan      html  css  js  c++  java
  • AJ学IOS 之ipad开发Popover的调色板应用_popover显示后其他控件仍然能进行交互

    AJ分享,必须精品

    一:效果

    后面的是xcode的控制台
    这里写图片描述

    二:代码

    ViewController

    #import "ViewController.h"
    #import "ColorsViewController.h"
    
    @interface ViewController () <ColorsViewControllerDelegate, UIPopoverControllerDelegate>
    - (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 <UIKit/UIKit.h>
    @class ColorsViewController;
    
    @protocol ColorsViewControllerDelegate <NSObject>
    
    @optional
    - (void)colorsViewController:(ColorsViewController *)vc didSelectColor:(UIColor *)color;
    @end
    
    @interface ColorsViewController : UITableViewController
    @property (nonatomic, weak) id<ColorsViewControllerDelegate> 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
    
  • 相关阅读:
    自古逢秋悲寂寥,奈何今秋热成雕?Python使用Pyecharts统计全国温度Top10并绘图
    Python爬虫帮你打包下载所有抖音好听的背景音乐,还不快收藏一起听歌
    补习系列(1)-springboot项目基础搭建课
    华为云OCR文字识别 免费在线体验!
    Python开发还在用virtualenv?不如了解下pipenv...#华为云·寻找黑马程序员#
    大型情感剧集Selenium:6_selenium中的免密登陆与cookie操作
    八分音符(频率)卷积算子 Octave Convolution
    补习系列-springboot-使用assembly进行项目打包
    Vue中拆分视图层代码的5点建议
    线上一个数组查询遇到的坑
  • 原文地址:https://www.cnblogs.com/luolianxi/p/4990277.html
Copyright © 2011-2022 走看看