IOS-自定义代理

实现功能:创建一个带导航功能的两个视图控制器(从一个窗口跳转到另一个窗口),第二个窗口创建两个按钮,标题分别为红色和绿色,点相应的按钮弹回前一个窗口,同时前一个窗口的背影色变成按钮标题指示的颜色(通过添加按键代理实现)。


一、添加一个窗口,添加两个按键(如图);


二、添加按键代理,代码实现

//

//  SecondViewController.h

//  界面跳转

//

//  Created by Jarvan on 15/5/23.

//  Copyright (c) 2015 Jarvan. All rights reserved.

//

#import <UIKit/UIKit.h>

@class SecondViewController;


// 1、添加按键代理

@protocol SecondViewControllerDelegate <NSObject>

// 2、代理的协议方法

- (void)secondViewControllerButtonClick:(SecondViewController *)secondView;

@end



@interface SecondViewController : UIViewController


// 3、定义代理属性

@property (nonatomic, weak) id<SecondViewControllerDelegate> delegate;

// 颜色的属性

@property (nonatomic, copy) NSString *colorString;


@end



//

//  SecondViewController.m

//  界面跳转

//

//  Created by Jarvan on 15/5/23.

//  Copyright (c) 2015 Jarvan. All rights reserved.

//

#import "SecondViewController.h"


@interface SecondViewController ()



@end


@implementation SecondViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

}


- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


// 按键事件处理

- (IBAction)buttonClick:(UIButton *)sender {

    if (sender.tag == 0) {

        NSLog(@"---红色按钮---");

        _colorString = @"red";

        // 通知代理

        // 1> 判断代理是否实现了协议方法

        if ([self.delegate respondsToSelector:@selector(secondViewControllerButtonClick:)]) {

            // 2> 如果实现了,再通知代理去工作

            [self.delegate secondViewControllerButtonClick:self];

        }

        // 返回第一个界面

        [self dismissModalViewControllerAnimated:YES];

    } else {

        NSLog(@"---绿色按钮---");

        _colorString = @"blue";

        // 通知代理

        // 1> 判断代理是否实现了协议方法

        if ([self.delegate respondsToSelector:@selector(secondViewControllerButtonClick:)]) {

            // 2> 如果实现了,再通知代理去工作

            [self.delegate secondViewControllerButtonClick:self];

        }

        [self dismissModalViewControllerAnimated:YES];

    }

}


@end



//

//  ViewController.m

//  界面跳转

//

//  Created by Jarvan on 15/5/23.

//  Copyright (c) 2015 Jarvan. All rights reserved.

//

#import "ViewController.h"

#import "SecondViewController.h"


// 遵守协议,遵守协议只是为了可以快速的敲出代理方法!

@interface ViewController () <SecondViewControllerDelegate>

@property (nonatomic, strong) SecondViewController *secondView;

@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    

#pragma mark - 设置代理注意点

    // 4、设置成为代理,在加载视图这就是实例化一个对象_secondView,之后就可以设置_secondView这个对象的delegate的属性

    // 载入SecondViewController,即跳转到第二个窗口

     _secondView = [self.storyboard instantiateViewControllerWithIdentifier:@"second"];

    _secondView.delegate = self;

}


- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


- (IBAction)buttonClick:(UIButton *)sender {

    if (sender.tag == 0) {

        // 将结果显示到界面上

        [self presentModalViewController:_secondView animated:YES];

    }

}


// 5、代理方法的实现

- (void)secondViewControllerButtonClick:(SecondViewController *)secondView{

    if (secondView.colorString == @"red") {

        self.view.backgroundColor = [UIColor redColor];

    } else {

        self.view.backgroundColor = [UIColor blueColor];

    }

    

}


@end




三、运行效果

                              

  


                            

 


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
iOS Objective-C 中自定义相片拍照功能,可以使用系统提供的 UIImagePickerController 类。UIImagePickerController 是一个系统自带的 UIImagePickerController 控制器,它提供了相机和相册的访问功能,可以方便地实现自定义相片拍照功能。 以下是简单的实现步骤: 1. 导入 UIImagePickerController 类: ``` #import <UIKit/UIKit.h> ``` 2. 创建 UIImagePickerController 实例: ``` UIImagePickerController *pickerController = [[UIImagePickerController alloc] init]; ``` 3. 配置 UIImagePickerController 实例: ``` pickerController.sourceType = UIImagePickerControllerSourceTypeCamera; // 设置为相机模式 pickerController.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto; // 设置为拍照模式 pickerController.cameraDevice = UIImagePickerControllerCameraDeviceRear; // 设置为后置摄像头 pickerController.allowsEditing = NO; // 禁止编辑 pickerController.delegate = self; // 设置代理 ``` 4. 打开相机: ``` [self presentViewController:pickerController animated:YES completion:nil]; ``` 5. 处理拍照结果: ``` - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<UIImagePickerControllerInfoKey,id> *)info { UIImage *image = info[UIImagePickerControllerOriginalImage]; // 处理拍照结果 [picker dismissViewControllerAnimated:YES completion:nil]; } ``` 通过系统提供的 UIImagePickerController 控制器,我们可以轻松地实现自定义相片拍照功能。如果需要进一步定制相机界面和功能,可以考虑使用 AVFoundation 框架,自定义相机界面和拍照功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值