接口回调VS委托代理

Android 接口回调

eg场景:Fragment 中数据变化Activity 跟随变化
Activity 文件

public class MainActivity extends FragmentActivity implements MainFragment.DataChangeListener {    
@Override        
protected void onCreate(Bundle savedInstanceState) {        
super.onCreate(savedInstanceState);        
setContentView(R.layout.activity_main);        
MainFragment fragment = new MainFragment();         
fragment.listener = this;        
FragmentManager fm = getSupportFragmentManager();         
fm.beginTransaction().add(R.id.fragment_container, fragment).commit();   
 }    
 @Override    
 public void changeData(String data) {       
 Log.d("activity 收到了监听 = ",data);   
 }
}

Fragment文件

public class MainFragment extends Fragment {  
DataChangeListener listener;    
@Nullable    
@Override    
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    if (listener != null) {            
listener.changeData("fragment data change");        
}        
return super.onCreateView(inflater, container,     savedInstanceState);    
}    
public interface DataChangeListener {        
public void changeData(String data);    
}
}

iOS 委托代理

eg场景:FoodsController 跳转到FoodsTypeController,选择分类后返回更新数据

FoodsViewController.m文件
#import "FoodsTypeViewController.h"
@interface FoodsViewController ()<FoodsTypeDelegate>

@end

- (void) getFoodsTypeId:(NSString *) id
{
    NSLog(@" 选择的id = %@", id);
}

- (void) rightButtonClick:(UIButton *) sender
{
FoodsTypeViewController *foodsTypeVC = [[FoodsTypeViewController alloc] init];
foodsTypeVC.foodsTypeDelegate = self;
[self.navigationController pushViewController:foodsTypeVC animated:YES];
}

FoodsTypeViewController.h

@protocol FoodsTypeDelegate <NSObject>

@optional
- (void) getFoodsTypeId:(NSString *) id;

@end

@interface FoodsTypeViewController : UIViewController
@property (nonatomic, weak) id<FoodsTypeDelegate>  foodsTypeDelegate;
@end

FoodsTypeViewController.m

[self.foodsTypeDelegate getFoodsTypeId:@"3"];
[self.navigationController popViewControllerAnimated:YES];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,544评论 25 708
  • 《Android Fragment完全解析,关于碎片你所需知道的一切》 我们都知道,Android上的界面展示都是...
    cxm11阅读 2,226评论 2 19
  • 英语里有一种猫,叫orange cat,就是全身为橘黄色的猫。 这类猫往往是猫群的头领。另外,世间还有谚语:十只橘...
    猫总画事阅读 748评论 3 3
  • 六月里 天空降着雨滴 希望落入土地 约定下个花季 六月里 湖面泛着涟漪 荷花绽放笑意 伊人雨中伫立 六月里 诗人拿...
    花飘水流阅读 331评论 0 1
  • 获取URL参数 查找两个节点的最近的一个共同父节点 数组去重 字符串转驼峰
    Tiny_z阅读 243评论 0 0