【问题标题】:How to refresh iPad screen left side view in split screen?如何在分屏中刷新 iPad 屏幕左侧视图?
【发布时间】:2017-03-19 08:38:48
【问题描述】:

我有一个 iPad 视图,它分为两个视图,因此我需要从右侧视图刷新左侧视图以了解 api 响应是否成功。但是左侧视图代码在目标c中,右侧视图代码在swift中。所以我如何刷新左侧视图。 我已经在 swift 类中创建了委托

  @objc protocol RefreshDelegate {
       func RefreshAfterSuccess()
  }
  class UpgradeViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UIPickerViewDataSource, UIPickerViewDelegate{

var delegate:RefreshDelegate?
}

现在,当我无法在 Objective-c 类中导入此委托并且无法在我的 Objective-c 类中实现 RefreshAfterSuccess 方法时。

【问题讨论】:

  • 您可以使用委托在控制器之间交换数据以及在 swift 和目标 c 之间进行交互,使用 breaze headersr。
  • 我正在尝试使用桥接头进行委托,但没有成功。
  • 然后发布不起作用的代码。或您在制作桥接头时遇到问题的步骤。
  • @pawan 我已经添加了代码。

标签: objective-c swift ipad


【解决方案1】:

方法一:

所以我的理解是,您的正确视图是 UpgradeViewController 类型的快速视图。

然后在objective-c中左侧的类定义中

1) 首先你要在头文件的括号中声明它正在实现这个协议(在实现中也可以这样做,但这里不需要隐藏它),并添加所需的方法声明

@interface LeftViewController : UIViewController <RefreshDelegate>

-(void)refreshAfterSucces;

@end

2) 然后在.m文件中添加方法的实际实现

@implementation

-(void)refreshAfterSucces {
    // Do your refreshing stuff here
}

@end

3) 在添加右视图控制器时,不要忘记将右视图控制器的 .delegate 属性设置为指向左视图控制器对象。

方法二:

如果这是嵌套在 UISplitViewController 中的两个 UIViewController 子类,那么它们中的每一个都应该有一个 .splitViewController 属性指向包含它们的 UISplitViewController。 UISplitViewController 本身应该有一个属性 .viewControllers ,它是一个包含所有子视图控制器的数组,因此您应该能够从右侧 VC 访问左侧(如果使用 objc)

self.splitViewController.viewControllers[0]

然后调用它的方法,等等

【讨论】:

  • 是的,这两个视图控制器在 UISplitViewController 中,但是当我尝试获取视图控制器时,它会为零。我的右侧视图控制器在 swift 中,而左侧视图控制器是 objc。
  • 我试过这个 let temp = self.splitViewController?.viewControllers[0] 但 temp 为零。
  • 您的左/右子视图控制器是直接嵌套在 UISplitViewController 中,还是先嵌套在 UINavigationControllers 中,然后将导航 VC 嵌套到拆分 VC 中。在较旧的库中, .splitViewController 属性可能只返回包含它的控制器,在这种情况下,这将是导航控制器。所以你可以试试 self.navigationController.splitViewController.viewControllers[0]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多