团队,
我试图在运行时在所有可见视图的顶部显示一个菜单。在某些条件下,此菜单应易于添加和动态删除。
为此,我尝试在运行时将UIWindow的按钮视图添加为子视图。
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self action:nil forControlEvents:UIControlEventTouchDown];
[button setTitle:@"Show View" forState:UIControlStateNormal];
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
[window addSubview:button];
[window makeKeyAndVisible];
[window bringSubviewToFront:button];
但它没有用。此外,我试图将此按钮放在根视图控制器中,但再没有运气。
修改 - 注意:此代码不是来自UIViewController
。我正在尝试构建一个库,这将在该库代码中。用例就像您可以发布NSNotification以在运行时动态启用和禁用此菜单。
请建议。
谢谢!
答案 0 :(得分:0)
更简单的方法是将菜单视图添加到控制器的视图中。你会有一些好处:
看看你的代码,我认为你在视图控制器中使用它,因此你不需要调用[window makeKeyAndVisible]。此外,您没有显示您正在谈论的窗口。你在创造吗?你使用的是根视图控制器吗?
答案 1 :(得分:0)
-(void)addMarketOpenCloseIcon;
在appdelgate.m
#pragma mark Add Market Open Close Label
-(void)addMarketOpenCloseIcon
if (lblMarketOpenClose==nil) {
lblMarketOpenClose=[[UILabel alloc ] initWithFrame:CGRectMake(116,20, 80, 21)];
lblMarketOpenClose.textColor=[UIColor redColor];
[lblMarketOpenClose setBackgroundColor:[UIColor clearColor]];
lblMarketOpenClose.font=[UIFont fontWithName:@"Arial" size:12];
[self.window addSubview:lblMarketOpenClose];
}
}
#pragma mark DidFinishLauch
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
//create all table
LoginViewController *login=[[LoginViewController alloc]initWithNibName:@"LoginViewController" bundle:nil];
navigationController = [[ UINavigationController alloc] initWithRootViewController:login];
[self.window setRootViewController:navigationController];
self.navigationController.navigationBarHidden=YES;
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
在LoginViewController.m中
- (void)viewDidLoad
{
[super viewDidLoad];
appdelgate=[[UIApplication sharedApplication]delegate];
[appdelgate addMarketOpenCloseIcon];
}
答案 2 :(得分:0)
您希望显示浮动在所有用户视图上的内容。您希望在库中实现此功能以便一般使用。
这听起来很像UIAlertView
。为什么不像UIAlertView
那样实现它?创建一个新的UIWindow
并将其windowLevel
设置为UIWindowLevelAlert
。将您的“浮动”内容放在您自己的UIWindow
。
您可以在this Q&A中找到一些有用的提示,以便创建第二个UIWindow
。
答案 3 :(得分:-1)
创建UIWindow对象,在其上添加按钮,然后将UIWindow对象添加到[UIApplication sharedApplication] .keyWindow
UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;
UIWindow *buttonWindow = [UIWindow alloc] initWithFrame: self.view.bounds]
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self action:nil forControlEvents:UIControlEventTouchDown];
[button setTitle:@"Show View" forState:UIControlStateNormal];
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
[buttonWindow addSubview: button];
[keyWindow addSubview: buttonWindow]
[buttonWindow makeKeyAndVisible]
[backgroundWindow bringSubviewToFront:button];