使用通知機制,在dismissViewControllerAnimated後,completion傳值給上一個父檢視方法
檢視firstView和secendView,點選firstView上面的按鈕presentviewcontroller出secendView;secendView上有個按鈕,點選按鈕dismissViewControllerAnimated,並將某個值傳給firstView,或不直接在firstView裡面的viewWillAppear裡面呼叫方法,而是直接通過在dismissViewControllerAnimated
completion裡面編輯程式碼塊呼叫firstView裡面的任何方法,該怎麼做?
這個問題其實並不複雜,如果你知道如何使用NSNotificationCenter實現起來還是非常簡單的。
先說一下,secendView在dismissViewControllerAnimated後,如何在進入firstView後,自動呼叫firstView裡面的任何方法
第一步:在secendView裡面,點選按鈕時呼叫一個方法,該方法為:
-(void)secendAction{
[self dismissViewControllerAnimated:YES completion:^{
[[NSNotificationCenter defaultCenter] postNotificationName:@"do" object:self];
}];
}
上面程式碼是將secendView dismissViewControllerAnimated掉,然後自動註冊一個名為do的通知
註冊了這個名為的通知,你就可以在任何.m檔案裡面通過以下程式碼呼叫到了:
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self
selector:@selector(handleColorChange:)
name:@"do"
object:nil];
上面的程式碼的意思就是,先找到已經註冊過的名為do的通知,然後再自動呼叫handleColorChange去處理,
所以:
第二步:在firstView裡面的viewWillAppear方法裡面寫入以下程式碼:
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self
selector:@selector(handleColorChange:)
name:@"do"
object:nil];
handleColorChange方法為:
-(void)handleColorChange:(id)sender{
[self firstView裡面方法]
}
看明白了吧?在secendView裡面我們不直接呼叫firstView裡面的方法,而是通過通知來讓firstView自動呼叫自己裡面的某個方法。
通過通知可以讓不同.m檔案之間進行方法和引數的傳遞
ok就下來說一下如何在dismissViewControllerAnimated後將secendView裡面的值傳遞給firstView
第一步:在secendView裡面,點選按鈕時呼叫一個方法,該方法為:
-(void)secendAction{
[self dismissViewControllerAnimated:YES completion:^{
[tools showToast:@"圖片資訊提交成功" withTime:1500 withPosition:iToastGravityCenter];
[[NSNotificationCenter defaultCenter] postNotificationName:@"do" object:self userInfo:dictionary];
}];
}
userInfo:dictionary裡面的dictionary就是你要傳遞的字典物件的值
第二步:在firstView裡面的viewWillAppear方法裡面寫入以下程式碼:
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self
selector:@selector(handleColorChange:)
name:@"do"
object:nil];
handleColorChange方法為:
-(void)handleColorChange:(NSNotification*)sender{
NSLog(@"%@",sender);
[self firstView裡面方法]
}
-(void)handleColorChange:(NSNotification*)sender裡面的sender就是你在secendView裡面所傳遞的字典物件的值,簡單吧?!
相關推薦
使用通知機制,在dismissViewControllerAnimated後,completion傳值給上一個父檢視方法
檢視firstView和secendView,點選firstView上面的按鈕presentviewcontroller出secendView;secendView上有個按鈕,點選按鈕dismissViewControllerAnimated,並將某個值傳給firstVi
react navigation傳值給上一頁面
reac 組件 .get value cto oba info state getpara 使用新的導航組件react navigation,傳值方式略微發生了一些改變 A頁面到B頁面 pushaddremark(){ let _this=this;
vue.js用select實現省,市,提交後,默認顯示省,市信息
scrip item use this res cnblogs alert var option <select v-model="citys" name="cityVal" @change="schoolName(citys)"> <opt
一臺服務器6塊600G的磁盤,raid5後,總大小3T,此時無法裝系統?請問為什麽?
raid解決辦法:方法1:做raid5後,不要重啟裝系統,而是再raid界面,繼續分1個小的虛擬磁盤vd 200G,用這個200G的虛擬磁盤裝系統,裝完系統後再把剩余的2.8T分區通過parted)。方法2:先拿1塊盤raid0,剩下5塊在做raid5,在raid0上裝系統。方法3:裝系統時(centos6.
並發實戰:多線程處理任務,結束後,執行後續操作
batch add 批次 for return countdown executors 操作 current 場景: 分批從大列表 blist 讀取數據,執行驗證過濾,符合條件的加入到列表中。然後執行批量入庫操作。 思路: 多任務從 blist 取數據執行,采用Excuet
當保存在Session中的對象,取出後,在外部發生改變時會怎樣
tun nbsp clas tex mod 在外 代碼 tpc spa return_reason_model model = new return_reason_model(); model.F_RetunrnReas
electron-vue應用build後,開啟exe檔案安裝,成功後,開啟應用報錯
問題描述: 2.解決方法: import {app, BrowserWindow, Menu, ipcMain, Tray,nativeImage} from 'electron' const path =
關於hibernate查詢後的物件,set後,更新資料庫的原因
關於hibernate查詢後的物件,set後,更新資料庫的原因 2018年03月29日 20:18:49 夜影鬼手 閱讀數:370更多 個人分類: hibernate 版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.
c# 子類改變父類資訊的問題,兩個窗體類傳值的問題
固定一個窗體在另一個窗體中首先需要設定父窗體IsMdiContainer屬性為True,然後在Load事件中加入以下語句: NewContact newConFrm = new NewContact(this); newConFrm.NewGroup = CreateGroup;
回溯法總結+四個小例題(裝載問題,01揹包,n後,最大團,m著色)
目錄 回溯法的基本策略 回溯法的基本策略 回溯法的解空間 回溯法基本思想 回溯法解題步驟 遞歸回溯和迭代回溯 子集樹和排列樹 裝載問題 01揹包問題回溯法求解 n後問題 圖的最大團問題 圖的m著色
今天在寫測試jdbc程式碼的時候發現數據一直刪不掉資料,發現後,蠢哭自己了
剛剛學習了jdbc,想自己寫一下,鞏固一下知識,插入了一些資料後,想刪除一些資料測試一下,試了很多下都沒刪掉,後來看了一下網上別人寫的程式碼,發現sql語句後面沒有加分號,String sql="delete from tb_student where id=12";簡直了,然後興沖沖的去執行程式碼
通過Appdelegate,來進行反向頁面傳值
//先在Appdelegate裡建立一個變數 //例 class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? //建立一個變數 var zuowen:String
被詐騙2.46萬元,報警後,只被告知追回損失的可能性極小
再次把我2018年10月21日沉痛的被詐騙經歷暴露給大家,可能會被大家嘲笑我愚蠢,但是我還是希望我的經歷能幫助更多人能不被騙,也希望能號召所有經歷過類似被詐騙的經歷的大家一起團結起來,協助公安機關破案,打擊罪犯~ 2018年10月21日上午9點半左右,我收到一個“高中同學”(騙子,真實該同學qq號被
求助大家:雙硬碟雙系統,開機後,只能進win10
求助大家:雙硬碟雙系統,開機後,只能進win10 我的需求:雙硬碟安裝雙系統,兩個系統相互獨立,互不影響,通過開機進bios來選擇進入哪個系統。 桌上型電腦配置: 1個256G SSD,已安裝好win10,分割槽表是GPT; 1個1T機械硬碟,原品牌機自帶,分了兩個區,E盤和F盤,原
乖乖,比賽後忘記了名次?咱們上! 演算法伺候!難度指數: **
知之者不如好之者,好之者不如樂之者。 -- 孔子 -- 乖乖,比賽後忘記了名次?咱們上! 演算法伺候! 【問題區】 在一次競賽中,A、B、C、D、E等五人經過激烈的角逐,最終取得了各自的名次,他們的一個好朋友很
jsp中servlet轉向web-inf中的jsp,web-inf中的jsp轉到servlet類以及傳值給servlset!
我們都知道web-inf中的jsp檔案是不能直接訪問的,而且他們之間也是不能相互簡單的訪問,我們常常採用的辦法就是隻有通過servlet中的request.getRequestDispatcher("/WEB-INF/xxx/yyy.jsp").forward(reques
js使用ajax傳值給後臺,後臺返回字串處理
之前使用js獲取後臺生成的JSON字串,然後給select填充值,這次需要重新獲取一次。 這裡的目標是,在一個input輸入框裡,輸入一個使用者名稱,判斷是否為空,是否不存在,如果存在返回幾個欄位給前臺,前臺再繫結到其他input上 直接壘程式碼 HTML頁面 <in
vue中父元件傳值給子元件,父元件值改變,子元件不能重新渲染
1在子元件中用watch()監聽值的改變,不同的型別的要用不同的監聽方法props: { echartStyle: { type: Object, default() { return {} }}, titleText: {
點選button觸發JS函式,通過AJAX傳值給後臺查詢,將返回值處理成table表格,新增到模態框裡顯示
//點選觸發onclick事件,攜帶此行的bodycode傳參給JS函式tiaozhuan();(這裡的<a>標籤,可以換成<button>) <td> <a href="javascript:void(0);" oncli
通過串列埠傳值給Arduino,再通過Arduino控制小車(直流電機)移動與二自由度雲臺轉動角度
## 首先,先附上程式碼 ## #include<Servo.h> Servo up,down; String comdata=""; //用於接收串列埠資料 int numdata[2]={0,0};