objective-c – 从app delegate中删除模态视图控制器

前端之家收集整理的这篇文章主要介绍了objective-c – 从app delegate中删除模态视图控制器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用facebook SDK登录我的应用程序.如果用户登录,则会以模态方式显示登录VC.用户点击登录后,如果登录成功,它会向App Delegate发出警报.如果是的话,我想解雇模态登录VC.我如何从应用代表执行此操作?

解决方法

appDelegate需要某种方式来知道托管viewController是谁,因此它可以发送dismiss消息.你需要找出一些方法来实现这一目标.一种方法是在appDelegate“callDismissOnMeIfFaceBookFails”上定义一个ivar,并在这种情况下设置它,否则为零.

注意如果它的nil,则appDelegate可以发送dismiss消息,没有任何开销没有问题!使用nil消息传递对您有利(我一直使用它). [旁白:我看到这么多代码“if(obj)[obj message];”不要做if – 只是发送消息 – 如果obj是nil它没有效果并且被有效处理!]

编辑:

所以你有一个AppDelegate类.在#interface中定义一个属性

@property (nonatomic,strong) UIViewController *callDismissOnMeIfFaceBookFails;

在实现中你@synthesize它.定义方法

- (void)dismissLoginView
{
  [callDismissOnMeIfFaceBookFails dismissModalViewControllerAnimated:YES];
  callDismissOnMeIfFaceBookFails = nil; // don't need it now,this unretains it
}

因此,在呈现模态视图控制器之前,呈现对象将appDelegate属性“callDismissOnMeIfFaceBookFails”设置为自身.

用户成功登录后,登录对象会将消息发送到appDelegate,告诉它解除LoginView.

猜你在找的Xcode相关文章