iOS:如何实现类似Android的行为';s startActivityForResult
我是一名Android开发者,正在开发我们应用程序的iOS版本。我需要知道如何在Android上实现类似startActivityForResult的行为。我需要显示一个新的视图控制器,然后在新视图控制器关闭时将控制权返回到上一个视图控制器。我还需要一个回调方法在那个时候被触发iOS:如何实现类似Android的行为';s startActivityForResult,android,iphone,ios,Android,Iphone,Ios,我是一名Android开发者,正在开发我们应用程序的iOS版本。我需要知道如何在Android上实现类似startActivityForResult的行为。我需要显示一个新的视图控制器,然后在新视图控制器关闭时将控制权返回到上一个视图控制器。我还需要一个回调方法在那个时候被触发 在iOS中如何实现这一点?通常,您可以使用UINavigationController来封闭视图控制器链。然后,您可以在视图控制器之间来回导航。对于回调,您可以在第二个视图控制器上使用viewWillDissapear:
在iOS中如何实现这一点?通常,您可以使用
UINavigationController
来封闭视图控制器链。然后,您可以在视图控制器
之间来回导航。对于回调,您可以在第二个视图控制器上使用viewWillDissapear:
delegate方法,并从那里执行一些操作。有几种方法,因此大多数情况下您可以使用各种模式自己执行。您可以在app delegate中设置导航控制器,如下所示:
self.viewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
self.navigationController = [[ UINavigationController alloc ] initWithRootViewController:self.viewController ];
self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];
然后,当你想展示一个新的vc时,你可以这样做:
OtherViewController *ovc = [[ OtherViewController alloc ] initWithNibName:@"OtherViewController" bundle:nil ];
[ self.navigationController pushViewController:ovc animated:YES ];
要返回,请执行以下操作:
[ self.navigationController popViewControllerAnimated:YES ];
就回调而言,实现这一点的一种方法是在项目中的某个地方创建这样的协议:
@protocol AbstractViewControllerDelegate <NSObject>
@required
- (void)abstractViewControllerDone;
@end
然后,当您解除ovc时,打这个电话
[self.delegate abstractViewControllerDone];
[ self.navigationController popViewControllerAnimated:YES ];
在符合您制定的协议的rootVC中,您只需填写以下方法:
-(void) abstractViewControllerDone {
}
你刚刚打电话给我。这需要大量的设置,但其他选项包括查看NSNotifications和Block,根据您的操作,这些选项可能更简单。如果我们假设您想从自己的应用程序打开活动,那么就很容易了。android活动可以由视图控制器(UIViewController
)表示
iOS和Android的体系结构非常不同。Android上的活动是独立的,iOS上的控制器在应用程序中紧密连接。您必须决定如何在屏幕上显示控制器(通常使用UINavigationController
,或使用presentViewController:animated:
)将其以某种方式连接到父控制器以接收结果。委托模式最适合于此
如果要启动在另一个应用程序中定义的活动或启动系统活动(例如拍摄相机照片),则必须使用其中一个预定义的控制器(例如UIImagePickerController)。在iOS上,你不能像Android那样简单地使用来自不同应用程序的控制器
我可以向你推荐另一件事——不要用Android设计模式编写iOS应用程序。考虑一下iOS上的常见功能,并以这种方式实现UI。不要只是复制Android代码。Android太棒了,iOS太差劲了!(我希望我的老板没有看到这个评论XD)最后,我看到了一些比iOS更容易在Android上实现的东西:D
[self.delegate abstractViewControllerDone];
[ self.navigationController popViewControllerAnimated:YES ];
-(void) abstractViewControllerDone {
}