【问题标题】:how to dismiss the UIPopoverController from another viewcontroller?如何从另一个视图控制器中关闭 UIPopoverController?
【发布时间】:2013-02-11 15:07:01
【问题描述】:

我创建了一个 UIPopoverController 并在单击 setReminder 按钮 popoverView 时将其添加到主视图控制器工作正常。如果我点击保存按钮,我想关闭 popupview 我该怎么办?

  **mainView.m**
-(void)btnSetReminderTapped:(id)sender
{
setReminderView =[[setReminder alloc]initWithNibName:@"setReminder" bundle:[NSBundle mainBundle]];

setReminderView.delegate = self;
FPPopoverController *popover = [[FPPopoverController alloc] initWithViewController:setReminderView];
popover.tint = FPPopoverDefaultTint;

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
    popover.contentSize = CGSizeMake(400,400);
}
else {
    popover.contentSize = CGSizeMake(320, 288);
}
popover.arrowDirection = FPPopoverArrowDirectionUp;

//sender is the UIButton view
[popover presentPopoverFromView:sender];
}

  ***setReminder.m***

- (IBAction) btnSaveTapped:(id) sender
{

}

【问题讨论】:

    标签: objective-c xcode uipopovercontroller


    【解决方案1】:

    使用委托通知您的主视图 btnSave 操作并在该委托中关闭。

    @protocol EventDelegate <NSObject>
    
    - evenSaveButtonClicked;
    
    @end
    

    在你的主 ViewController 中实现它

    - (void) eventSaveButtonClicked{
        [popover dissmissPopoverAnimated:YES];
    }
    
    -(void)btnSetReminderTapped:(id)sender
    {
    setReminderView =[[setReminder alloc]initWithNibName:@"setReminder" bundle:[NSBundle mainBundle]];
    setReminder.delegate = self;
    setReminderView.delegate = self;
    FPPopoverController *popover = [[FPPopoverController alloc] initWithViewController:setReminderView];
    popover.tint = FPPopoverDefaultTint;
    
    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    {
        popover.contentSize = CGSizeMake(400,400);
    }
    else {
        popover.contentSize = CGSizeMake(320, 288);
    }
    popover.arrowDirection = FPPopoverArrowDirectionUp;
    
    //sender is the UIButton view
    [popover presentPopoverFromView:sender];
    }
    

    你必须在你的 SetReminder 类中创建一个委托

    @interface SetReminder
    
    @property(nonatomic, unsafe_unretain) id<EventDelegate> delegate
    
    @end
    

    在实现文件(.m)中你可以合成如下

    @implementation SetReminder
    @synthesis delegate
    
    // Your button save code
    - (IBAction) btnSaveTapped:(id) sender
        {
             if([delegate respondToSelector:@selector(eventSaveButtonClicked)]){ 
                 [delegate eventSaveButtonClicked];
             }
        }
    

    @结束

    【讨论】:

    • 我已经完成了代码实现你可以再检查一次
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    • 1970-01-01
    • 2014-12-12
    相关资源
    最近更新 更多