【问题标题】:Present view controller is not showing当前视图控制器未显示
【发布时间】:2017-10-04 13:10:43
【问题描述】:

当用户点击分享按钮时,我想显示 presentViewController 以将数据分享到 whatsapp 或其他一些应用程序。同时我想在 5 秒内杀死第二个视图控制器。

如果用户点击分享按钮,第二个 ViewController 将在 5 秒后被杀死。如果用户单击共享按钮,我想显示 presentViewController,同时我想杀死第二个 ViewController。怎么可能?

我尝试了以下方法,但它不起作用。

我在第一个 ViewController 中实现了 Share 方法,当用户单击第二个 ViewController 中的共享按钮时,我在第一个 ViewController 中调用 share 方法仍然没有显示 presentViewController

下面是第一个 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];
}

他们有什么方法可以完成这项工作吗?

谢谢。

【问题讨论】:

  • 您的第一个视图控制器隐藏在第二个视图控制器下方,因此它无法呈现新的视图控制器。您可以做的是让 导航控制器 呈现一个新的视图控制器,因为它封装了所有其他视图控制器。那么你的“第二个视图控制器”应该只调用dismissViewControllerAnimated:

标签: ios objective-c presentviewcontroller


【解决方案1】:

我正在使用此代码,

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

点击分享按钮时不要调用viewcontroller的dismiss方法,那个时候你会得到presentViewController。为 ActivityViewContoller 实现编译块,当您完成将数据共享到 whatsapp 或 gmail 等时,编译块将执行。它返回布尔值共享是否成功。在该块中,您应该调用 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;

[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];
}

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2012-08-13
    • 1970-01-01
    • 2016-12-28
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    相关资源
    最近更新 更多