调用viewController

时间:2015-08-17 18:47:24

标签: ios objective-c uiviewcontroller uiimageview

我在Xcode项目中有两个视图控制器(所有视图控制器都在故事板中创建)。

第一个视图控制器有两个(或更多)按钮,带有某些背景图像。第二视图控制器应在用户触摸后显示某个按钮的全屏背景图像(某个按钮)。

第二个视图控制器有一个属性UIImageView,应该在第二个视图控制器的代码中分配和初始化(UIImageView不是在故事板中创建的。)

第二个视图控制器是第一个视图控制器的委托,并且有一个方法:

-(void) viewController:(ViewController *) viewController buttonPressed: (UIButton *) button.

每个按钮都有一个模态segue到第二个视图控制器。

接下来是应用程序的动作顺序(我通过调试意识到):

  1. 用户触摸任何按钮
  2. Button调用一个调用委托方法viewController:buttonpressed:的操作方法。 UIImageView实例在此方法中使用button backgroundImageForState:
  3. 返回的图像进行分配和初始化
  4. 调用第二个视图控制器的方法viewDidLoad,其中UIImageView实例应添加到第二个视图控制器的超级视图并显示在屏幕上。
  5. 问题是尽管在委托方法UIImageView中分配了viewController:buttonpressed:实例,但该方法在方法{{1}的开头变为nil第二个视图控制器。在viewDidLoad中所做的所有行动都无济于事。

    代码如下:

    首先查看控制器代码

    viewController:buttonpressed:

    第二视图控制器代码

    - (void)viewDidLoad {
        [super viewDidLoad];
        ViewControllerForImage *temp = (ViewControllerForImage *) [self.storyboard instantiateViewControllerWithIdentifier:@"ViewControlForImage"];
    
        self.delegate = temp;
    }
    
    -(IBAction)buttonPressed:(id)sender{
        [self.delegate viewController:self buttonPressed:sender];
    }
    

1 个答案:

答案 0 :(得分:0)

为什么不直接传递prepareForSegueMethod中的信息?

同样在你的代码中为什么要将viewcontroller的实例发送回第二个视图控制器?你完全没有使用它。