从另一个视图刷新当前 UIViewController - Swift

Refresh Current UIViewController from another view - Swift

我的问题是我想即时将一些设置应用到我的 运行 应用程序。 找了很多关于如何刷新TableController的教程,但是都不是这样

我有一个 UIViewController,里面有一些标签和一个按钮,当我按下按钮时,我打开了 PopOver(因此在当前视图中)另一个 ViewController,我的设置页面控制器。从这里我可以选择文本标签的颜色和应用程序的语言。 很遗憾,我不知道如何立即应用此设置。

如果有任何帮助,加上一些代码,那就太棒了!

您应该将父控制器的实例转移到弹出窗口。

func showPopover() {
     var settingController = ...
     var popoverController = ...
     settingController.parentController = self
     //show popover
     ...
}

在SettingController中,你会有一个variance parentController

或者您可以通过覆盖 willViewAppear、didViewAppear 来刷新父控制器。

编辑

(1)

@protocol MyDelegate {
    -(void) refreshLable:(UIColor*)color;
}
@implement ParentController<MyDelegate>  {
    - (IBAction) showPopover {
         ChildController *childController = ...
          childController.delegate = self;
         ...//Show popover
     }
    - (void) refreshLabel:(UIColor *) color {
       //Implement protocol with update label
    }
}
@implement ChildController {
    MyDelegate *delegate;
    - (IBAction) changeColor {
         Color *color=...
         if (delegate != null) [delegate changeLabel:color];
    }
}

(2)

@implement ChildController {
    - (IBAction) changeColor {
         Color *color=...
         [[SystemManager instance] setColor: color]; 
         //Here SystemManager instance if static variable
    }
}
@implement ParentController {
    - (void) viewWillAppear:(BOOL)animated {
         [super viewWillAppear:animated];
         //Get color from static variable
         UIColor *color = [[SystemManager instance] getColor];
         //Update label here
    }
}