从另一个视图刷新当前 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
}
}
我的问题是我想即时将一些设置应用到我的 运行 应用程序。 找了很多关于如何刷新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
}
}