ios swift 實現簡單MVP模式

2022-03-28 01:57:45 字數 1890 閱讀 1996

在移動開發中,會用到各種架構,比如mvp,mvvm等,其目的就是為了讓專案**的可讀性更好,減輕在android(activity) ios(controller)中的大量**問題。接下來就開始我們的mvp入門之旅吧。

1.什麼是mvp?

mvp是模型(model)、檢視(view)、主持人(presenter)的縮寫,分別代表專案中3個不同的模組。 

1.1 模型 (model):負責處理資料的載入或儲存

1.2 檢視 (view):負責介面資料的展示與使用者互動

1.3 主持人(presenter):是model和view之間的橋梁,將兩者進行鏈結。 

2.mvp的簡單實踐:

2.1 loginmodel:

// 定義乙個協議用於做登入結果的**

protocol logindeletage elseelse{

blok("賬號或密碼錯誤")

2.2 loginview:

// 定義乙個協議用來實現與介面互動需要的互動方法

protocol loginview  {

// 這裡只是使用了乙個簡單的登入結果顯示方法,當然需要其它方法的時候只需要在這裡新增相應的方法即可

func loginresult(result:string)

// .......還可以定義更多方法

2.3 loginpresenter:

// 別忘了這裡要實現在loginmodel中定義的協議

class loginpresenter:nsobject,logindeletage{

// 持有loginmodel

private var model:loginmodel?

// 持有 loginview

private var loginview:loginview?

//在構造方法中傳入loginview

init(loginview:loginview) {

self.loginview=loginview

self.model = loginmodel()

// 定義乙個login方法供外部呼叫

func login(name:string,pwd:string) {

//這裡呼叫通過協議的**方式呼叫loginmodel中的login方法

//      self.model?.login(name: name, pwd: pwd,deletage: self)

//這裡呼叫通過閉包的**方式呼叫loginmodel中的login方法

self.model?.login(name: name, pwd: pwd, blok: {resultin

loginview?.loginresult(result: result)

// 實現協議裡的方法

func loginresult(result:string) {

self.loginview?.loginresult(result: result)

3.以上三個類定義好了之後接下來開始測試,只需要在我們的viewcontroller中呼叫即可:

//這裡需要實現loginview的協議

class viewcontroller:uiviewcontroller,loginview{

private var p:loginpresenter?

overridefuncviewdidload() {

super.viewdidload()

self.p=loginpresenter(loginview:self)

self.p?.login(name:"admin", pwd:"1234")

func loginresult(result:string) {

print("登入結果:",result)

4.總結:

iOS Swift 簡單實現Loading動畫

在網上扒的過程中看到乙個挺簡單的乙個載入動畫,看了一下原作者的 學習了一下原作者的思想,也感謝那位坐著哈。接下來看一下效果圖 接下來給大家具體講解一下實現的過程 其實整個動畫就是乙個畫弧的過程,必須確定圓心 半徑 弧的起始位置 敲黑板 重點 核心思想就是通過建立乙個計時器來不停的改變弧的起始位置。整...

MVP的簡單使用

首先 兩個布局 activity main和item mvp activity main 布局 其次ltem mvp布局 定義乙個介面卡 mvpadapter public class mvpadapter extends baseadapter override public int getcou...

MVP登入 簡單易懂

public abstract class baseactivity extends activity implements loginview if isshowstate progressdialog newprogressdialog this 設定布局 setcontentview inti...