如何更新当前的ModalViewController返回的滑块和开关的值?
我有他们有一些设置属性的帐户。 作为设置有UISlider
值和UISwitch
值。 当我运行应用程序它工作正常,我可以显示从NSUserDefaults
的最后一个值,因为viewDidLoad方法的作品。 顺便说一下,我的应用程序有一个标签栏控制器。 所以当我切换选项卡它也能正常工作,因为我可以得到开关和滑块的值,并在viewWillAppear方法更新它们。 但在我的设置开关,我提出了一个视图,其中有用户列表,所以用户可以select任何帐户。 当我从呈现视图回来时,我无法更新开关和滑块的值。 我需要一个触发器方法来更新它们的值。 有没有办法做到这一点?
是的,这是苹果的三种方法:
1) Delegation 2) NSNotificationCenter 3) KVO
但是,对于您的特定情况模式的观点,代表团模式是苹果公司build议的模式,也是我会推荐的模式。
它需要比其他2个选项更多的编码。
首先,您必须在您以模态方式呈现的视图中声明协议:
in your .h @protocol MyProtocol; @interface MyClass : NSObject @property (nonatomic, weak) id<MyProtocol> delegate; @end @protocol MyProtocol <NSObject> -(void)updateValues:(NSArray *)values; @end
然后,在从原始视图控制器模态地呈现模态视图之前,只需像这样设置这个图标
myModallyPresentedController.delegate = self;
然后让你的呈现视图控制器采用协议
in your .h MyPresentingViewController : UIViewController <MyProtocol> in .m //Implement method: -(void)updateValues:(NSArray *)values { //Update Values. }
最后当用户按下“完成”
你可以打电话
[delegate updatedValues:myValues];
并据此更新。
希望有所帮助。
我前一段时间写过,基本上只是将其粘贴到所有这些问题中。 顺便说一句,如果任何人有build议,这将使这更容易理解/更好,我很乐意听到他们。
您可以使用代表在类之间传递信息; 这对于使用方法时要传递信息的情况特别有用。
Delegates //In parent .m file: //assign the delegate - (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if([segue.identifier isEqualToString:@"segueName"]) { childController *foo = segue.destinationViewController; foo.delegate = self; } } //implement protocol method(s): - (void) methodName:(dataType*) dataName { //An example of what you could do if your data was an NSDate buttonLabel.titleLabel.text = [[date description] substringToIndex:10]; } //In parent .h file: //import child header #import "ChildName.h" //indicate conformity with protocol @interface ParentName : UIViewController <ChildNameDelegate> //In child .h file //declare protocol @protocol ChildNameDelegate - (void) methodName:(dataType*) dataName; @end //declare delegate @property (weak, nonatomic) id<ChildNameDelegate> delegate; //In child .m file //synthesize delegate @synthesize delegate; //use method - (IBAction)actionName:(id)sender { [delegate methodName:assignedData]; }
- 如何使用CGContext iOS在其他设备方向绘制string
- 如何使用JavaScript在iOS上捕捉隐藏键盘事件
- 更新Swift中的徽章计数器
- 在后台线程中加载UIImage会导致ImageIO错误
- iOS应用程序外部testing版苹果限制
- 是否有可能使用Cocoa Touch手势识别器与图层/ CALayer对象?
- Swift 2 – performBatchUpdates – 在UICollectionView框架内部可视化的时候,一个接一个地animation单元格
- Xcode 4.3:在Organizer的档案中缺lessiOS应用程序的图标
- 使用AVFoundation逐帧录制audio和video