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

时间:2015-03-16 16:14:50

标签: ios swift uiviewcontroller xcode6

我的问题是我想在飞行中将一些设置应用到我正在运行的应用程序中。 我找到了很多关于如何刷新TableController的教程,但事实并非如此。

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

任何有关代码的帮助都会很棒!

1 个答案:

答案 0 :(得分:0)

您应该将父控制器的实例转移到popover。

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

在SettingController中,你将有一个方差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
    }
}