我有两个UIViewControllers,第一个(A)接受用户输入并询问他们是否想要添加照片。如果他们点按了"添加照片"按钮,被推到第二个(B)viewcontroller。两个视图控制器都存在于导航控制器内部,我只有一个从A到B的segue。我已经读过其他答案,但是他们都使用prepareToSegue,这需要从B回到A的segue,但这并不是因为导航控制器真的有效。
我在这里附上了我的两个viewcontrollers的屏幕截图。有没有更好的方法(模态)?我在Objective-C中写这篇文章。
答案 0 :(得分:0)
在B.h控制器中,您需要在b.h声明
之上创建协议/委托@protocol MyClassImageReturnDelegate <NSObject> //define delegate protocol
- (void) myClassDelegateMethodThatReturnsImage: (UIImage *) image; //define delegate method to be implemented within another class
@end
在B.h
@property (nonatomic, weak) id <MyClassDelegate> delegate; //define MyClassDelegate
在B.m
- (void) myMethodToReturnImageAndGoBack {
[self.navigationController popViewControllerAnimated:YES];
[self.delegate myClassDelegateMethod:imageThatNeedToreturn]; //this
}
在A.m中,您需要在推送
之前设置此委托 bClassObject.delegate = self;
并且还实现了该方法
- (void) myClassDelegateMethodThatReturnsImage: (UIImage *) image {
NSLog(@"Delegates are great!");
}
答案 1 :(得分:0)
您可以使用块传回任何您想要的内容。在转到B之前,设置块。然后在B中完成你的工作时,调用块并将UIImage作为参数发送。
答案 2 :(得分:0)
实现这一目标的很多方法。
- 使用委托B.在prepareForSegue中设置B的委托。
- 将图像保存到B上的沙箱,B postNotification(NSNotificationCenter)告诉A从沙箱中拾取照片。
- 使用单身并将照片留在记忆中(如果照片很大,可能不太好)
- 使用自定义块方法和completionHandler。
醇>
一切都相对容易。