View 與 Controller 之間的delegate(代理)傳值

来源:http://www.cnblogs.com/pengbo12346/archive/2016/10/10/5946119.html
-Advertisement-
Play Games

這個代理傳值是經常使用的一種傳值方式,下麵介紹一種View 和 Controller 之間的代理傳值方法。 先建立一個View視圖 如 LoginView 是繼承於一個UIView 在LoginView.h裡面聲明協議 LoginView.h文件 import @class LoginView; / ...


這個代理傳值是經常使用的一種傳值方式,下麵介紹一種View 和 Controller 之間的代理傳值方法。
先建立一個View視圖
如 LoginView 是繼承於一個UIView
在LoginView.h裡面聲明協議
LoginView.h文件

   #import <UIKit/UIKit.h>

@class LoginView;
//1.聲明協議
@protocol LoginViewDelegate
@optional//可選的

  • (void)sureButtonTaped:(LoginView )loginView info:(NSString )info;
    @end
    @interface LoginView : UIView
    //2.聲明delegate屬性
    @property (nonatomic,assign) id delegate;
    @end

在LoginView.m 有一個textField,一個button,點擊button,將textField裡面的值傳入Controller裡面。
LoginView.m文件

#import "LoginView.h"
@interface LoginView ()
@property (nonatomic,strong)UITextField textField;
@property (nonatomic,strong) UIButton
button;

@end

@implementation LoginView

  • (instancetype)initWithFrame:(CGRect)frame
    {
    self = [super initWithFrame:frame];
    if (self) {
    self.backgroundColor = [UIColor yellowColor];

    [self setUp];

    }
    return self;
    }

  • (void)setUp{

    _textField = [[UITextField alloc] init];
    _textField.bounds = CGRectMake(0, 0, CGRectGetWidth(self.bounds) * 0.7, 40);
    _textField.center = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds) - 100);
    _textField.tintColor = [UIColor redColor];
    _textField.borderStyle = UITextBorderStyleLine;
    _textField.keyboardType = UIKeyboardTypeASCIICapable;
    _textField.placeholder = @"請輸入文字";
    _textField.clearButtonMode = UITextFieldViewModeWhileEditing;
    [self addSubview:_textField];

    _button = [UIButton buttonWithType:UIButtonTypeSystem];
    _button.frame = CGRectMake(120, 280, 80, 30);
    [_button setTitle:@"登陸" forState:UIControlStateNormal];
    [_button addTarget:self action:@selector(buttonTaped:) forControlEvents:UIControlEventTouchUpInside];
    [self addSubview:_button];

}

  • (void)buttonTaped:(UIButton *)sender
    {
    //調用協議方法
    [_delegate sureButtonTaped:self info:_textField.text];

}

在這裡我們用於接收的視圖就用一開始的ViewController,你也可以傳入你想要傳入的視圖

ViewController.h文件

#import
@interface ViewController : UIViewController
@end

ViewController.m文件
#import "ViewController.h"
#import "LoginView.h"
//引入協議

@interface ViewController ()

@end

@implementation ViewController

  • (void)viewDidLoad {
    [super viewDidLoad];
    LoginView *login = [[LoginView alloc]initWithFrame:CGRectMake(20, 200, 375-40, 350)];
    //1.設置代理
    login.delegate = self;
    [self.view addSubview:login];

}
#pragma mark -- LoginViewDelegate
//3.實現協議方法

}

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

@end

總結:代理加方法的傳值是一種很好的傳值方式,我們可以將自己要傳入的值寫進方法裡面,打包傳入,方便快捷。。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在BaseFragment中使用了LoadingPage,而LoadingPage的聯網載入使用的是AsyncHttpClient。一直報java.lang.IllegalArgumentException: Illegal character in query at index 261解析不成功, ...
  • 本文地址:http://www.cnblogs.com/wuyudong/p/5947504.html,轉載請註明出處。 在之前的文章中,實現了導航界面1佈局編寫與相關的邏輯代碼,如下圖所示: 點擊“下一頁” 進入新的activity: 可以看到,佈局和之前的類似,代碼如下: 效果如下: ...
  • iOS4.0開始,Block橫空出世,它其實就是c預言的補充,書面點說就是帶有自動變數的匿名函數,Block簡潔,代碼的可讀性也高,因此深受廣大開發者的喜愛,這一次給大家介紹Block的基本類型和項目中的實際操作。 Block的形式如下: Block的基本類型 1.無參數無返回值 2.無參數有返回值 ...
  • Android架構 圖1 Android架構自上而下名稱為應用層、應用框架層、運行庫和Adroid虛擬機層、 Linux內核層。 1. 應用層 應用層像一座大廈裡面的磚瓦。我們所做的開發基本上都在應用層,在手機上應用層的軟體有桌面、簡訊、電話、瀏覽器、微信、扣扣等等這類軟體。應用層的軟體是在應用框架 ...
  • 本文主要介紹9patch圖 *.9.png:android手機上,可以按需求自動拉伸的圖片 本文地址:http://www.cnblogs.com/wuyudong/p/5947195.html,轉載請註明出處。 使用AS點開XXX.9.png圖片 可以看到圖片的四條邊有黑色的線段。下麵通過示意圖來 ...
  • 鏡像下載地址:https://developers.google.com/android/nexus/images 1、打開手機 設置-關於手機-點擊版本號7次,以打開“開發者選項” 2、返回上一步,開發者選項-打開USB 調試3、將手機關機4、同時按住電源鍵&音量減鍵,進入bootloader界面 ...
  • 本文來實現《Android 手機衛士--導航界面1的佈局編寫》中的圖片選擇器部分的代碼。 本文地址:http://www.cnblogs.com/wuyudong/p/5944356.html,轉載請註明出處。 這個可以參考官網提供的API文檔 圖片選擇器編寫 在選中和未選中的過程中,切換展示圖片 ...
  • 1.生命周期 關於生命周期,在詳細講解下: 上圖是從android官網獲取的生命周期。 正常的流程,很多文章都討論過了,我們討論幾個特殊的情況。 1)OnResume->OnPause->OnResume 我們看這段解釋:The activity is no longer visible。 也就是說 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...