按下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];
}
任何人都可以帮助我,请问有什么问题。
非常感谢您提前帮助我
答案 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];
这应该为你做。