简体   繁体   English

当前视图控制器未显示

[英]Present view controller is not showing

When user click on share button i want to show presentViewController for share data into whatsapp or other some apps. 当用户单击共享按钮时,我想显示presentViewController以便将数据共享到whatsapp或其他某些应用程序中。 At the same time i want to kill that 2nd viewcontrlooer with in 5 sec. 同时,我想在5秒内杀死第二个viewcontrlooer。

If user click on share button or not 2nd ViewController will be killed after 5 seconds. 如果用户没有点击共享按钮,第二个ViewController将在5秒钟后被杀死。 if user click on share button i want to show presentViewController and at the same time i want to kill 2nd ViewController. 如果用户单击共享按钮,我想显示presentViewController,同时我想杀死第二个ViewController。 how it is possible? 怎么可能?

I tried below way but it is not working. 我尝试了以下方式,但无法正常工作。

I implemented Share method in 1st Viewcontroller, when user clicks on share button in 2nd ViewController i am calling share method in 1st Viewcontroller still it is not showing presentViewController 我在第一个Viewcontroller中实现了共享方法,当用户单击第二个ViewController中的共享按钮时,我在第一个Viewcontroller中调用了共享方法,但它仍未显示presentViewController

below is the share method in 1st Viewcontroller 下面是第一个Viewcontroller中的共享方法

    -(void)share:(NSString *)code :(NSString *)brandname :(NSString *)clickid :(NSString *)url{

    NSString *textToShare =[NSString stringWithFormat:@"%@%@%@",@"Install and register ",brandname,@" app  here" ];
    NSString *subText = [NSString stringWithFormat:@"%@%@%@%@%@",@"it's awesome, plus ad me will reward you '",code,@"' on ad me to redeem reward \n\n",@"No ad me? Get ad me \n",@"Link: https://e2by6.app.goo.gl/0RKn" ];
    NSString *longd =[NSString stringWithFormat:@"%@%@",url,clickid];

    //NSURL *long_link=[NSURL URLWithString:longd];

    NSArray *objectsToShare = @[textToShare, longd,  subText];

    UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil];

    NSArray *excludeActivities = @[UIActivityTypeAirDrop,
                                   UIActivityTypePrint,
                                   UIActivityTypeAssignToContact,
                                   UIActivityTypeSaveToCameraRoll,
                                   UIActivityTypeAddToReadingList,
                                   UIActivityTypePostToFlickr,
                                   UIActivityTypePostToVimeo];

    activityVC.excludedActivityTypes = excludeActivities;

    [self presentViewController:activityVC animated:YES completion:nil];
}

Is their any way to do this job? 他们有什么办法完成这项工作吗?

Thank you. 谢谢。

I am using this code, 我正在使用此代码,

[activityVC setCompletionWithItemsHandler:^(UIActivityType  _Nullable activityType, BOOL completed, NSArray * _Nullable returnedItems, NSError * _Nullable activityError) {
        if (completed) {
            //dismiss your viewcontroller here
        }else{
          //dismiss your viewcontroller here
        }
    }];

Don't call viewcontroller dismiss method when you click on share button, That time you will get presentViewController. 当您单击共享按钮时,不要调用viewcontroller dismiss方法,这时您将获得presentViewController。 Implement Compilation block for ActivityViewContoller that compilation block will execute when you complete share data into whatsapp or gmail etc. it returns boolean value share is success or not. ActivityViewContoller实现Compilation块,当您将共享数据完全共享到whatsapp或gmail等中时,将执行该编译块。它返回布尔值共享成功与否。 In that block you should call viewcontroller dismiss method. 在该块中,您应该调用viewcontroller dismiss方法。

Your code becomes, 您的代码变成

   -(void)share:(NSString *)code :(NSString *)brandname :(NSString *)clickid :(NSString *)url{

    NSString *textToShare =[NSString stringWithFormat:@"%@%@%@",@"Install and register ",brandname,@" app  here" ];
    NSString *subText = [NSString stringWithFormat:@"%@%@%@%@%@",@"it's awesome, plus ad me will reward you '",code,@"' on ad me to redeem reward \n\n",@"No ad me? Get ad me \n",@"Link: https://e2by6.app.goo.gl/0RKn" ];
    NSString *longd =[NSString stringWithFormat:@"%@%@",url,clickid];

    //NSURL *long_link=[NSURL URLWithString:longd];

    NSArray *objectsToShare = @[textToShare, longd,  subText];

    UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil];

    NSArray *excludeActivities = @[UIActivityTypeAirDrop,
                                   UIActivityTypePrint,
                                   UIActivityTypeAssignToContact,
                                   UIActivityTypeSaveToCameraRoll,
                                   UIActivityTypeAddToReadingList,
                                   UIActivityTypePostToFlickr,
                                   UIActivityTypePostToVimeo];

    activityVC.excludedActivityTypes = excludeActivities;

[activityVC setCompletionWithItemsHandler:^(UIActivityType  _Nullable activityType, BOOL completed, NSArray * _Nullable returnedItems, NSError * _Nullable activityError) {
        if (completed) {
            //dismiss your viewcontroller here
        }else{
          //dismiss your viewcontroller here
        }
    }];

    [self presentViewController:activityVC animated:YES completion:nil];
}

I hope it will helps you. 希望对您有帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM