获取当前控制器,封装方法可直接调用

                                                    

实际开发中,经常会遇到弹窗,在弹窗中有点击事件,然后跳转到指定页面。比如当前页面,点击上架,会显示弹窗显示当前上架总数,并且右边按钮可以跳转到店铺页面。那么问题来了。通常情况下这种弹窗都是一个view加在当前keywindow上。先来看一下弹窗的源码,在访问请求成功的情况下,将我们分装好的putawayview放到key window上

if ([dic[kFlag] isEqualToString:@"1"]) {
                
                [SSGOTools showInfoPopHint:@"上架成功"];
                
                PutAwayView * view = [[PutAwayView alloc]initWithFrame:CGRectMake(0,kScreenHeight -91 -X_HOME_INDICATOR_HEIGHT, kScreenWidth , 91 )];
                [view updateViewWithBean:dic[kMsg]];
                __weak PutAwayView * weakView = view;
                weakView.shopblock = ^(NSInteger tag) {
                    if (tag == 102) {
                     
                        ShopListVC *vc = [ShopListVC new];
                        [[SSGOTools getCurrentViewController].navigationController pushViewController:vc animated:YES];
                    }
                };
                UIWindow *window = [[UIApplication sharedApplication]keyWindow];
                [window addSubview:view];
                
                dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC));
                dispatch_after(delayTime, dispatch_get_main_queue(), ^{
                    [view removeFromSuperview];
                });
                
            }

通过view的block回调,我们推出一个新的页面。到店铺页面。那么如何获得当前的window背后显示的控制器呢?这里需要一个方法,已经封装成类方法,拿来直接用即可,代码如下:

+(UIViewController *)getCurrentViewController
{
    return [SSGOTools topViewControllerWithRootViewController:[[UIApplication sharedApplication].keyWindow rootViewController]];
}

+ (UIViewController*)topViewControllerWithRootViewController:(UIViewController*)rootViewController
{
    if ([rootViewController isKindOfClass:[RDVTabBarController class]]) {
        RDVTabBarController *tabBarController = (RDVTabBarController *)rootViewController;
        return [SSGOTools topViewControllerWithRootViewController:tabBarController.selectedViewController];
    } else if ([rootViewController isKindOfClass:[UINavigationController class]]) {
        UINavigationController* navigationController = (UINavigationController*)rootViewController;
        return [SSGOTools topViewControllerWithRootViewController:navigationController.visibleViewController];
    } else if (rootViewController.presentedViewController) {
        UIViewController* presentedViewController = rootViewController.presentedViewController;
        return [SSGOTools topViewControllerWithRootViewController:presentedViewController];
    } else if ( [rootViewController isKindOfClass:[UIPageViewController class]]){
        UIPageViewController * pageViewController = (UIPageViewController*)rootViewController;
        return  pageViewController.viewControllers[0];
        
    }else {
        return rootViewController;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,以下是使用Spring Boot编写获取当前时间的方法的示例代码: 首先,您需要在pom.xml文件中添加Spring Boot Web依赖项,以便您可以使用@RestController和@RequestMapping注释: ```xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> ``` 接下来,您可以创建一个控制器类并添加一个方法,该方法使用Java 8的LocalDateTime类获取当前时间: ```java @RestController public class TimeController { @RequestMapping("/time") public String getCurrentTime() { LocalDateTime currentTime = LocalDateTime.now(); return currentTime.toString(); } } ``` 在上面的示例中,@RestController注释将该类标记为控制器类,@RequestMapping注释将该方法映射到"/time"端点。该方法使用LocalDateTime类获取当前时间,并将其作为字符串返回。 您现在可以启动Spring Boot应用程序,并使用浏览器或cURL等工具访问"http://localhost:8080/time",以获取当前时间的字符串表示。 ### 回答2: 使用Spring Boot编写一个获取当前时间的方法非常简单。首先,我们需要确保已经在pom.xml文件中添加了`spring-boot-starter-web`依赖,这样我们就可以使用Spring Boot的Web功能。 然后,我们创建一个名为`TimeController`的Java类,并使用`@RestController`注解将它标记为一个控制器。`@RestController`注解使得该类可以处理HTTP请求并返回响应。在`TimeController`类中,我们创建一个名为`getCurrentTime`的方法,并使用`@GetMapping`注解来指定该方法处理GET请求。 在`getCurrentTime`方法内部,我们使用Java的`LocalDateTime`类来获取当前时间,并将其转换为字符串格式。最后,我们使用`ResponseEntity`类将时间字符串封装成HTTP响应,并返回给调用者。 下面是具体的代码实现: ```java import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.time.LocalDateTime; @RestController public class TimeController { @GetMapping("/current-time") public ResponseEntity<String> getCurrentTime() { LocalDateTime currentTime = LocalDateTime.now(); String timeString = currentTime.toString(); return ResponseEntity.ok(timeString); } } ``` 通过上面的代码,我们创建了一个名为`/current-time`的HTTP路由,该路由可以通过GET请求访问。当我们通过浏览器或其他HTTP客户端访问该路由时,它将返回一个包含当前时间的字符串响应。 如果您想要进一步定制响应格式或其他功能,您可以根据需要对代码进行更改。 ### 回答3: 要使用Spring Boot编写一个获取当前时间的方法,可以按照以下步骤进行: 1. 创建一个Spring Boot项目,并添加所需的依赖项,如Spring Boot Web和Spring Boot DevTools。 2. 在项目中创建一个控制器类,用于处理HTTP请求和响应。 3. 在控制器类中创建一个带有一个路由的方法,例如`/current-time`。 4. 在方法中使用`java.util.Date`类来获取当前的日期和时间。 5. 使用`java.text.SimpleDateFormat`类来将日期和时间格式化为所需的字符串格式。 6. 在方法中返回格式化后的日期和时间字符串作为HTTP响应。 7. 启动Spring Boot应用程序,并使用Postman或Web浏览器向`http://localhost:8080/current-time`发送请求。 8. 应该会在响应中看到当前的日期和时间。 下面是一个示例代码: ```java import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.text.SimpleDateFormat; import java.util.Date; @RestController public class TimeController { @GetMapping("/current-time") public String getCurrentTime() { Date now = new Date(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String currentTime = format.format(now); return currentTime; } } ``` 这个例子中,我们创建了一个`TimeController`类,并在其中定义了一个`getCurrentTime`方法。该方法通过`new Date()`获取当前的日期和时间,然后使用`SimpleDateFormat`将其格式化为"yyyy-MM-dd HH:mm:ss"的字符串。最后,我们通过`@GetMapping`注解将`/current-time`路径与该方法绑定,在收到请求时返回格式化后的当前时间字符串。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值