我在Xcode项目中有两个视图控制器(所有视图控制器都在故事板中创建)。
第一个视图控制器有两个(或更多)按钮,带有某些背景图像。第二视图控制器应在用户触摸后显示某个按钮的全屏背景图像(某个按钮)。
第二个视图控制器有一个属性UIImageView
,应该在第二个视图控制器的代码中分配和初始化(UIImageView
不是在故事板中创建的。)
第二个视图控制器是第一个视图控制器的委托,并且有一个方法:
-(void) viewController:(ViewController *) viewController buttonPressed: (UIButton *) button.
每个按钮都有一个模态segue到第二个视图控制器。
接下来是应用程序的动作顺序(我通过调试意识到):
viewController:buttonpressed:
的操作方法。 UIImageView
实例在此方法中使用button backgroundImageForState:
viewDidLoad
,其中UIImageView
实例应添加到第二个视图控制器的超级视图并显示在屏幕上。 问题是尽管在委托方法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];
}
答案 0 :(得分:0)
为什么不直接传递prepareForSegueMethod中的信息?
同样在你的代码中为什么要将viewcontroller的实例发送回第二个视图控制器?你完全没有使用它。