0

我的项目中有一个 UIPopoverController。

文件构成

Mainfile.h Mainfile.m Mainfile.xib (查看)

tableview.h tableview.m tableview.xib (表视图)

我将我的 PopoverController 方法放在我的主文件中。我的问题是当我在表中选择一行时,我无法从 mainfile.m 访问我的方法到 tableview.m。

我的代码

主文件.h

UIPopoverController *popMenu;
@property(nonatomic,retain) IBOutlet UIPopoverController *popMenu;
-(IBAction)showPopOverid) sender;
-(IBAction)hidePopOver;

主文件.m

#import "tableview.h"

-(IBAction)showPopOverid) sender {

if ([popMenu isPopoverVisible]) {
[popMenu dismissPopoverAnimated:YES];
} else {

tableview *toc = [[tocView alloc] init];
popMenu = [[UIPopoverController alloc] initWithContentViewController:toc];
[toc release];
[popMenu presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAn y animated:YES];

}

}

-(IBAction)hidePopOver {
NSLog(@"hidePopOver");
[popMenu dismissPopoverAnimated:YES];
}

在其他文件中

表格视图.m

- (void)tableViewUITableView *)tableView didSelectRowAtIndexPathNSIndexPath *)indexPath {

//I WANT TO ACCESS THE METHOD of hidePopOver from the mainfile so i can hide my popViewController
// i've tried a lot but not working
NSLog(@"hidePopOver"); 

}

提前谢谢你们

4

2 回答 2

2

我想您在某个按钮上有一个ParentViewController和一个childViewControllerPopoverfor 弹出框,上面有一个“childViewController”!为了关闭你childViewControllerPopover,你可以使用这样的打击代码

首先进入ChildViewController.h

@protocol ChildViewControllerDelegate
    -(void)closeView;
@end

@interface ChildViewController : UIViewController{
    id<ChildViewControllerDelegate> delegate;
}
@property (nonatomic, assign) id<ChildViewControllerDelegate> delegate;
@end

当其中之一cellyourTable选中!你应该调用那个方法,所以把它放进去ChildViewController.m

- (void)tableViewUITableView *)tableView didSelectRowAtIndexPathNSIndexPath *)indexPath  {
    [delegate closeView];
}

在你的ParnetViewController.h

@interface ParnetViewController : UIViewController <ChildViewControllerDelegate>{
    UIPopoverController *childViewControllerPopover;
}

而对于ParnetViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];

    ChildViewController *childViewController = [[ChildViewController alloc] init];
    childViewController.delegate = self;
    childViewControllerPopover = [[UIPopoverController alloc] initWithContentViewController:childViewController];
    [childViewController release];
}

-(void)closeView{
    [childViewControllerPopover dismissPopoverAnimated:YES];
    // Do anything
}
于 2012-06-26T11:14:15.803 回答
0

看起来您需要使用委托来调用其他方法。Xcode 没有全局控制器,当它们不是程序的焦点时,您可以调用其他类方法。

于 2012-06-06T13:04:20.163 回答