关键词:
【中文标题】从 UIPopover 向主 UIViewController 发送代表消息【英文标题】:Send a Delegate message from UIPopover to Main UIViewController 【发布时间】:2012-01-16 18:25:02 【问题描述】:我试图在我的UIPopover
中使用一个按钮在我的主要UIViewController
中创建一个UITextView
,我的代码看起来像这样(PopoverView.h
文件):
@protocol PopoverDelegate <NSObject>
- (void)buttonAPressed;
@end
@interface PopoverView : UIViewController <UITextViewDelegate> //<UITextViewDelegate>
id <PopoverDelegate> delegate;
BOOL sendDelegateMessages;
@property (nonatomic, retain) id delegate;
@property (nonatomic) BOOL sendDelegateMessages;
@end
然后在我的PopoverView.m
文件中:
- (void)viewDidLoad
[super viewDidLoad];
UIButton * addTB1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
addTB1.frame = CGRectMake(0, 0, 100, 50);
[addTB1 setTitle:@"Textbox One" forState:UIControlStateNormal];
[self.view addSubview:addTB1]; // Do any additional setup after loading the view from its nib.
[addTB1 addTarget:self action:@selector(buttonAPressed)
forControlEvents:UIControlEventTouchUpInside];
- (void)buttonAPressed
NSLog(@"tapped button one");
if (sendDelegateMessages)
[delegate buttonAPressed];
还有我的MainViewController.m
:
- (void)buttonAPressed
NSLog(@"Button Pressed");
UITextView *textfield = [[UITextView alloc] init];
textfield.frame = CGRectMake(50, 30, 100, 100);
textfield.backgroundColor = [UIColor blueColor];
[self.view addSubview:textfield];
我正在使用委托协议来链接 popover 和 ViewController,但我一直坚持如何让我的 BOOL
语句链接 PopoverView 和 MainViewController 中的 -(void)buttonAPressed
,这样当我按下按钮时弹出一个文本视图出现在主 VC 中。我该怎么做呢?
【问题讨论】:
【参考方案1】:在您创建PopoverView
的MainViewController
中,请务必设置其delegate
属性,否则在PopoverView
中向delegate
发送消息将无济于事。
例如在MainViewController.m
:
PopoverView *pov = [[PopoverView alloc] initWithNibName:nil bundle:nil];
pov.delegate = self; // <-- must set this
thePopoverController = [[UIPopoverController alloc] initWithContent...
我不确定您为什么需要 sendDelegateMessages
变量。即使使用该布尔值,您也必须设置 delegate
属性,以便 PopoverView
具有将消息发送到的实际对象引用。
如果您想确保delegate
对象已经实现了您将要调用的方法,您可以这样做:
if ([delegate respondsToSelector:@selector(buttonAPressed)])
[delegate buttonAPressed];
此外,delegate
属性应使用assign
(或weak
,如果使用ARC)而不是retain
声明(请参阅Why use weak pointer for delegation? 以获得解释):
@property (nonatomic, assign) id<PopoverDelegate> delegate;
另一件事是如果你不使用ARC,你需要在MainViewController
中的buttonAPressed
方法的末尾添加[textfield release];
以避免内存泄漏。
【讨论】:
这绝对是固定的,非常感谢!并感谢您的提示。会阻止我犯更多的错误。如何从另一个 UIPopover 控制器打开 UIPopover 控制器?
】如何从另一个UIPopover控制器打开UIPopover控制器?【英文标题】:HowtoopenUIPopoverControllerfromanotherUIPopoverController?【发布时间】:2012-06-1908:16:01【问题描述】:如何在iPad中从另一个Popover控制器打开一个Popover控制器?我想对此有所... 查看详情
有啥方法可以从 UITableView 索引中呈现 UIPopover 吗?
】有啥方法可以从UITableView索引中呈现UIPopover吗?【英文标题】:IsthereanywaytopresentanUIPopoverfromanUITableViewindex?有什么方法可以从UITableView索引中呈现UIPopover吗?【发布时间】:2010-07-3012:56:48【问题描述】:我想展示一个来自UITableVi... 查看详情
无法从另一个类中关闭 UIPopover
】无法从另一个类中关闭UIPopover【英文标题】:UnabletodismissaUIPopoverfromanotherclass【发布时间】:2013-06-2915:41:34【问题描述】:我有一个iPad应用,使用XCode4.6.3、iOS6.2、ARC和Storyboards创建。我在SubViewData.m中以编程方式创建了一个UIPop... 查看详情
UIPopover 从错误的按钮出现
】UIPopover从错误的按钮出现【英文标题】:UIPopoverappearingfromwrongbutton【发布时间】:2013-10-1116:28:31【问题描述】:我有一个应用程序,它从现有库中获取图像,或者从相机中获取新图像。在iPad上,当我按下“从库”按钮时,弹... 查看详情
如何从 UISegmentedControl 的选定段呈现 UIPopover
】如何从UISegmentedControl的选定段呈现UIPopover【英文标题】:HowtopresentUIPopoverfromselectedsegmentofUISegmentedControl【发布时间】:2013-09-2608:07:11【问题描述】:我需要从UISegmentedControl的选定片段中显示弹出框,该片段是UIToolBar的子视图。... 查看详情
从 UITableViewCell 中的 DisclosureButton 呈现 UIPopover
】从UITableViewCell中的DisclosureButton呈现UIPopover【英文标题】:PresentingaUIPopoverfromaDisclosureButtoninaUITableViewCell【发布时间】:2011-08-0706:31:28【问题描述】:我正在尝试做一些非常简单的事情,但我不知道如何将弹出框锚定到UITableViewC... 查看详情
启动时如何将数据从 uiviewcontroller 发送到 uipopover?
】启动时如何将数据从uiviewcontroller发送到uipopover?【英文标题】:howtosenddatafromuiviewcontrollertouipopoverwhenitisbeinglaunched?【发布时间】:2013-07-1602:07:31【问题描述】:我在许多视图控制器的uipopover中使用uidatepicker。我需要在每个视... 查看详情
如何从 UIPopover 中的 UIButton 在主 UIView 中创建 UITextView?
】如何从UIPopover中的UIButton在主UIView中创建UITextView?【英文标题】:HowdoicreateaUITextViewinmainUIViewfromaUIButtonWithinUIPopover?【发布时间】:2012-01-1017:30:07【问题描述】:当UIControlEventTouchUpInside发生在UIPopoverController中的UIButton时,我正... 查看详情
当父视图是 UIPopover 时,iPad 上的 UIActionSheet 从底部出现
】当父视图是UIPopover时,iPad上的UIActionSheet从底部出现【英文标题】:UIActionSheetoniPadcomesupfromthebottomwhentheparentviewisaUIPopover【发布时间】:2012-01-1021:48:29【问题描述】:在iPad上,我有一个弹出框视图。视图中有一个显示UIActionSheet... 查看详情
从异步块向主线程发送参数时遇到问题
】从异步块向主线程发送参数时遇到问题【英文标题】:TroubleSendingParametertoMainThreadFromAsyncBlock【发布时间】:2013-01-0305:56:56【问题描述】:我有以下方法在拍摄照片后从UIImagePicker检索ALAsset。然后它尝试通过主线程将此ALAsset发... 查看详情
Xcode 4.3.2 上的 uipopover 冻结问题
】Xcode4.3.2上的uipopover冻结问题【英文标题】:uipopoverfreezeissueonXcode4.3.2【发布时间】:2012-05-0206:59:56【问题描述】:你好,我只是想从一个矩形按钮制作一个简单的uipopover。在以前的Xcode(4.2)中,我可以毫无问题地运行它,但是... 查看详情
从自定义 UIPopOver 问题推送新的 UIViewController
】从自定义UIPopOver问题推送新的UIViewController【英文标题】:PushingnewUIViewControllerfromcustomUIPopOverissue【发布时间】:2015-04-0310:57:37【问题描述】:您好,我正在使用这个library来显示我的PopOver,其中包含带有searchBar的tableView。问题... 查看详情
自定义 UIPopover
】自定义UIPopover【英文标题】:CustomizingUIPopover【发布时间】:2013-08-1417:39:32【问题描述】:我想改变UIPopover的颜色。我创建了一个自定义弹出框,但我不知道为什么不显示边框。这是显示UIPopover的MainViewController文件:@synthesizebt... 查看详情
键盘显示时 uipopover 隐藏
】键盘显示时uipopover隐藏【英文标题】:uipopoverhideswhenkeyboardshows【发布时间】:2012-08-0611:26:55【问题描述】:我有一个带有UItextfield的UIpopover,当我打开popover并点击uitextfield然后键盘显示,但它隐藏了popover。如何在不隐藏UIpopove... 查看详情
UIPopover 内的 UITextField
】UIPopover内的UITextField【英文标题】:UITextFieldinsideUIPopover【发布时间】:2012-04-2018:14:44【问题描述】:我在UIPopover中有一个UITextField。但是,无论我做什么,我都无法输入它。如果我在主视图控制器中使用UITextField可以正常工作... 查看详情
UIPopOver、UITextView 和自动调整大小
】UIPopOver、UITextView和自动调整大小【英文标题】:UIPopOver,UITextViewandautomaticresizing【发布时间】:2012-03-2220:01:56【问题描述】:我有一个应用程序,允许用户将事件添加到列表中。我用来执行此操作的方法是通过我在UIPopOver中向... 查看详情
UIPopover 中的 UIDatePicker
】UIPopover中的UIDatePicker【英文标题】:UIDatePickerinUIPopover【发布时间】:2011-11-1214:22:46【问题描述】:我已经搜索了整个互联网(也许我有点夸大其词),以获取有关如何将DatePicker放入UIPopover并在iPad应用程序中显示的教程。我... 查看详情
UIPopover 防止摇晃撤消
】UIPopover防止摇晃撤消【英文标题】:UIPopoverpreventingshaketoundo【发布时间】:2012-07-0619:46:45【问题描述】:我有一个允许在各种情况下输入文本的应用程序。当文本输入到UIPopover内的UITextView或UITextField时,摇动撤消不起作用。摇... 查看详情