1. 你说的其实是页面之前UI不一样的情况,那和View没关系,主要是ViewController,对View来说,它不知道自己将要在哪个Controller上显示,由Controller控制它所有的子视图就行了,viewDidLoad也是Controller的方法,这个方法调用的时候是表示Controller自己的view已经准备好了,而它持有的那些子视图还没有准备好(Xib、Storyboard除外)
2. 3.
指定的delegate不一定是VC,可能是任意的对象,所以presentingViewController显然不合适;delegate顾名思义就是委托,当一件事情发生后,自己不处理,让别人来处理(因为别人获取不到准确的触发时机)
传递其实很简单了,如果b有一个属性,属性是id类型(任意类型):
b.delegate = xxxx
2. 3.
指定的delegate不一定是VC,可能是任意的对象,所以presentingViewController显然不合适;delegate顾名思义就是委托,当一件事情发生后,自己不处理,让别人来处理(因为别人获取不到准确的触发时机)
传递其实很简单了,如果b有一个属性,属性是id类型(任意类型):
b.delegate = xxxx
解决方案 »
- xcode4 tableview测试编译成功,显示空白一片, 求救。
- touchesMoviedwithevent 或者点图片移动具体的实现操作
- 外包活做不完,找创业搭档
- [新手急问] 一个关于UIButton的问题
- iOS/iPhone 问题,求指导
- 向UIScrollView中添加button,滑动有点卡顿,何解?
- view controllers is discouraged
- 新人求教,如何在IOS系统上开发出VPN的客户端?
- 求大神给推荐一个做图表的第三方库,(折线,柱图,饼图)支持左右滑动的。。
- iOS开发,刚接手React-native,遇到的问题,求教!
- 请问下java下得writeUTF 和readUTF方法,在ios里面对应的是什么方法?
- IOS开发想购买一个苹果电脑,希望大家推荐
2、对于控制器来说,除了presentingViewController以外,还有pushViewController等;delegate 主要的作用并不是传参的,也不仅仅限于UIViewController之间使用,个人理解更多的是解耦
3、delegate使用的时候,传递一个“id",一般会附件一个约束id<xxdelegate> ,这里的id 很明显指的就是面向对面的多态
//////////A.h
@protocol ADelegate: NSObject
-(void)a:(A *)a test:(NSString *)test;
@end@protocol ADelegate
@interface A: NSObject
@property (nonatomic,weak ) id<ADelegate> delegate;-(void)deliveryData;
@end////////A.m
#import "A.h"
@implemention A-(void)deliveryData {
NSLog(@"A开始传递数据");
if (delegate && [delegate isRespondToSelector(a:test:)]) {
NSLog(@"将A的数据传递到订阅者B");
[delegate a:self test:@"A->B"];
}
}
@end///////////B.h
@interface B:NSObject<ADelegate>
@end///////////B.m
#import "B.h"
@implemention B-(void)a:(A *)a test:(NSString *)test {
NSLog(@"B接收来自A的数据 :%@",test);
}@end
static void Main() {
A *a = [A new];
B *b = [B new];
a.delegate=b;
[a deliveryData];
}