1. 你说的其实是页面之前UI不一样的情况,那和View没关系,主要是ViewController,对View来说,它不知道自己将要在哪个Controller上显示,由Controller控制它所有的子视图就行了,viewDidLoad也是Controller的方法,这个方法调用的时候是表示Controller自己的view已经准备好了,而它持有的那些子视图还没有准备好(Xib、Storyboard除外)
2.   3.
指定的delegate不一定是VC,可能是任意的对象,所以presentingViewController显然不合适;delegate顾名思义就是委托,当一件事情发生后,自己不处理,让别人来处理(因为别人获取不到准确的触发时机)
传递其实很简单了,如果b有一个属性,属性是id类型(任意类型):
b.delegate = xxxx

解决方案 »

  1.   

    1、ios的视图都是一个类,如果多个视图有代码需要共用的话,可以考虑继承一下;viewload这个不管是loadView还是ViewDidLoad 都只会执行一次(百度UIViewcontroller的生命周期)
    2、对于控制器来说,除了presentingViewController以外,还有pushViewController等;delegate 主要的作用并不是传参的,也不仅仅限于UIViewController之间使用,个人理解更多的是解耦
    3、delegate使用的时候,传递一个“id",一般会附件一个约束id<xxdelegate> ,这里的id 很明显指的就是面向对面的多态
      

  2.   

    1. 一个控制器controller 对应一个根视图superview。但你可以有多个子视图subviews。如果对于有相同layout但数据源不同的视图,你可以共用一个(封装相同的行为)。viewdidLoad 是viewcontroller生命周期中的一环,当你的视图将要渲染显示到屏幕上时会调用这个viewdidload方法2. delegate 是一种数据传递的模式,但不是你所说的情况。一般用在“向后传值”(其实这样说不是太恰当),应该是两个对象之间的数据传递,其中一个对象负责接收,另一个对象负责发送,接收者即为delegate的订阅者。同时它也解决了对象之间的依赖,紧藕合。3. delegate的用法:第2条已经提到这两个对象应该有一个是sender (A) ,另外一个是receiver (B) , receiver(B)需要实现 sender (A)的代理方法 a.delegate  = b
      

  3.   

    伪代码 as follows:
    //////////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];
    }
      

  4.   

    谢谢回答,想在问个问题,如果是选项卡有场景a和场景b,如果从b跳转到c页面,怎么返回到b啊。c里面加了个按钮拖到b上,点击返回不到b啊
      

  5.   

    可以回去了,exitToHere忘了实现了。