Infobutton不显示ModalView

时间:2012-01-09 22:19:31

标签: iphone

按下infobutton时,它不显示ModalView

  UIBarButtonItem *infoItem = [[UIBarButtonItem alloc] 
                           initWithTitle:@"Info" 
                           style:UIBarButtonItemStyleBordered 
                           target:self
                           action:@selector(displayModalView:)]; 




- (void)displayModalView 
{

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

self.viewController = [[Infoviewcontroller alloc] init];

UINavigationController *navigationController=[[UINavigationController alloc] init];

navigationController.navigationBar.tintColor = [UIColor brownColor];  

[navigationController pushViewController:_viewController animated:YES];

[_window addSubview:navigationController.view];

self.window.rootViewController = self.viewController;

[self.window makeKeyAndVisible];   

}

任何人都可以帮助我,请问有什么问题。

非常感谢您提前帮助我

1 个答案:

答案 0 :(得分:2)

在您的问题中,您没有指定如何创建对象(工具栏及其上的按钮),您是通过拖放还是从纯代码从Xcode创建它们,因此我将尝试指出常见的这两个案件的问题。

首先,我假设您正在使用Xcode并拖动您喜欢的组件。在这种情况下,您需要在.h文件中创建一个Outlet,它将链接到栏上的按钮,如下所示:

@interface yourViewController : UIViewController
{
    UIBarButtonItem *barButton;
}

@property (nonatomic, retain) IBOutlet UIBarButtonItem *barButton;

- (void) barButtonPress;

请注意,我添加了一个能够处理按下按钮的功能。现在您需要将此Outlet链接到条形按钮项,只需在 Connection Inspector 中的Xcode中,其中 New Referencing Outlet 拖动到File的Owner框(黄色立方体) )。

现在在viewDidLoad添加以下内容:

[barButton setTarget:self];
[barButton setAction:@selector(barButtonPress)];

此代码会将您的栏按钮链接到您按下时要调用的功能。现在,对于您希望查看Modal的视图,我假设您已经在.h文件中#import,我们将其称为MyViewModal。

按下小节按钮时将调用的函数内部:

- (void) barButtonPress
{
    MyViewModal *myViewModal = [[MyViewModal alloc] initWithNibName:@"MyViewModal" bundle:nil];
    [self presentModalViewController:myViewModal animated:YES];
}

就是这样,它将显示在模态视图中。请记住,根据您的需要分配新视图,在这里我做了最简单的例子只是为了说明。

更新:如果不使用Xcode

如果你没有使用Xcode,那么你应该已经定义了一个工具栏,说它名为myToolBar。要将Buttoms添加到工具栏,我们使用myToolbar.items方式,因此我们需要在添加按钮之前准备按钮及其目标。这是一个工作流程:

UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
[infoButton addTarget:self action:@selector(barButtonPress) forControlEvents:UIControlEventAllEvents]; //same function as above
UIBarButtonItem *btn = [[[UIBarButtonItem alloc] initWithCustomView:infoButton] autorelease];
myTool.items = [NSArray arrayWithObjects:btn, nil];

这应该为你做。