我正在使用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”设置为自身.