从弹出窗口中的 UISwitch 操作中隐藏 UIImageView (iPad)
Posted
技术标签:
【中文标题】从弹出窗口中的 UISwitch 操作中隐藏 UIImageView (iPad)【英文标题】:Hiding UIImageView from UISwitch action in popover (iPad) 【发布时间】:2017-04-23 23:49:04 【问题描述】:我需要从弹出框内的 UISwitch 触发的操作中隐藏 UIImageView。
我正在使用这段代码,但是在点击 UISwitch 时它什么也没做,可能是因为 UISwitch 在弹出视图中。
此代码在 iPhone 上完美运行,但在 iPad 上无法运行且 UIImageView 不会隐藏。为什么?
- (IBAction)toggleImage:(id)sender
if ([sender isOn])
self.myImage.hidden = NO;
else
self.myImage.hidden = YES;
UIImageView 连接到插座,UISwitch 连接到插座和动作。
请帮忙,谢谢。
【问题讨论】:
奇怪的是,NSLog(@"%@",self.myImage);输出空值。但是在 Interface Builder 中显示为已连接? 看这个:developer.apple.com/reference/uikit/… 感谢您的帮助。如何将特定的 UIImageView 链接到 '@property(nonatomic, copy) NSArray由于与之交互的开关位于弹出框上,而我们要更改的图像视图位于底层(呈现)VC 上,因此正确的方法是使底层 VC 成为弹出框的委托。
// MyPopoverVC.h
@protocol PopoverDelegate <NSObject>
- (void)popover:(MyPopoverVC *)vc changedSwitchTo:(BOOL)on;
@end
@interface MyPopoverVC : UIViewController
@property (nonatomic, weak) id<PopoverDelegate>delegate;
// ...
@end
在 Popover VC 的实现中(重要提示:开关的 IBAction 应该连接到 popover vc)...
- (IBAction)toggleImage:(UISwitch *)sender
[self.delegate popover:self changedSwitchTo:sender.on];
在呈现的vc中,声明它符合<PopoverDelegate>
协议。在呈现弹出框之前,初始化委托...
MyPopoverVC *myPopoverVC = [[MyPopoverVC alloc] init...
myPopoverVC.delegate = self;
同样在呈现的vc中,实现委托协议...
- (void)popover:(MyPopoverVC *) changedSwitchTo:(BOOL)on
self.myImage.hidden = !on;
【讨论】:
以上是关于从弹出窗口中的 UISwitch 操作中隐藏 UIImageView (iPad)的主要内容,如果未能解决你的问题,请参考以下文章