UIButton addTarget:self action:@selector() 傳多個引數
利用RunTime中的objc_setAssociatedObject函式可以輕鬆做到
/**
* Sets an associated value for a given object using a given key and association policy.
*
* @param object The source object for the association.
* @param key The key for the association.
* @param value The value to associate with the key key for object. Pass nil to clear an existing association.
* @param policy The policy for the association. For possible values, see “Associative Object Behaviors.”
*
* @see objc_setAssociatedObject
* @see objc_removeAssociatedObjects
*/
OBJC_EXPORT void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy)
OBJC_AVAILABLE(10.6, 3.1, 9.0, 1.0);
以下是我專案中的程式碼
先將引數通過key繫結在btn上
TestMode1 *model1 = [[TestMode1 alloc]init];
TestMode2 *model2 = [[TestMode2 alloc]init];
objc_setAssociatedObject(self.popView.btnYES, "model1", model1, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
objc_setAssociatedObject(self.popView.btnYES, "model2", model2, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
[self.popView.btnYES addTarget:self action:@selector(changePeriod:) forControlEvents:UIControlEventTouchUpInside];
在點選事件函式中通過objc_getAssociatedObject將多個引數取出來即可
- (void)changePeriod:(UIButton *)btn{
[self removeTheTipView];
TestMode1 *m1 = objc_getAssociatedObject(btn, "model1");
TestMode2 *m2 = objc_getAssociatedObject(btn, "model2");
}
當然要是通過宣告一個全域性變數來傳值也是可以的
相關文章
- iOS之@selector的函式傳遞多個引數iOS函式
- mybatis 傳入多個引數MyBatis
- MyBatis傳入多個引數MyBatis
- Swift 里正確地 addTarget(_:action:for:)Swift
- Mybatis parameterType 傳入多個引數的使用MyBatis
- GridView CommandArgument傳遞多個引數View
- MyBatis傳入多個引數的問題MyBatis
- mybatis 傳遞多個引數 --解決mybatis查詢使用多個引數方法--javabean傳統方法和map方法MyBatisJavaBean
- Mybatis(五)--原始碼分析傳入單個list引數和多個list引數寫法MyBatis原始碼
- 15.MyBatis傳入多個引數的問題MyBatis
- ASP.NET 標記href傳遞多個引數ASP.NET
- Silverlight之Frame傳遞多個引數並獲取完整引數
- SpringMVC中@RequestBody接收前端傳來的多個引數SpringMVC前端
- Mybatis傳遞多個引數的4種方式(乾貨)MyBatis
- 在多個JSP頁面之間傳遞引數JS
- struts2的action與jsp之間傳遞引數JS
- Mybatis 傳入多個引數查詢資料 (3種方法)MyBatis
- rails中傳遞多個引數破壞了 restful原則?AIREST
- MyBatis傳入多個引數,傳入陣列和列表資料的處理MyBatis陣列
- 可否在JSP中向applet傳遞多個引數?JSAPP
- 12.MyBatis學習--對映檔案_引數處理_單個引數&多個引數&命名引數MyBatis
- C# 多執行緒引數傳遞C#執行緒
- Spring MVC 3 Action 支援的引數SpringMVC
- mybatis 的傳入引數如何既有物件又有單個引數MyBatis物件
- 給一個介面傳遞引數,並接收返回的引數
- Swift 使用lexicographicallyprecedes 多個引數排序Swift排序
- Angular 自定義結構化指令,如何傳入多個輸入引數Angular
- 如何在mybatis 中傳多個引數,如何在mybatis 中遍歷 集合?MyBatis
- Python 中__init__函式以及引數selfPython函式
- 在 Angularjs 中 ui-sref 和 $state.go 如何傳遞單個多個引數和將物件作為引數AngularJSUIGo物件
- Action裡result型別Stream的引數配置型別
- struts2 action中result引數詳解
- 請問大哥,jdon的分頁標籤怎麼傳遞多個引數?
- bash shell指令碼接受多個引數指令碼
- 引數傳遞
- Redux進階系列3:如何設計action、reducer、selectorRedux
- iOS UILabel/UIButton文字設定多個顏色iOSUI
- GridView傳遞兩個引數的方法View