以编程方式添加按钮

时间:2014-02-21 16:53:34

标签: ios button hierarchy

我以编程方式使用外部类添加按钮:

文件标题:

-(UIView*) makeButtonNotification;

文件方法:

-(UIView* ) makeButtonNotification{

UIImage * buttonImage = [UIImage imageNamed:@"chat-notify.png"];

button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:self
           action:@selector(goChat)
 forControlEvents:UIControlEventTouchUpInside];
button.frame = CGRectMake(280.0, 25.0, 30.0, 30.0);
[button setBackgroundImage:buttonImage forState:UIControlStateNormal];

return button;

}

这个按钮调用goChat方法

- (void)goChat{

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
chat = (chatViewController *)[storyboard instantiateViewControllerWithIdentifier:@"chatViewController"];
chat.view.layer.zPosition = 10;


[[[[UIApplication sharedApplication] delegate] window] setRootViewController:chat];

}

我使用以下代码添加视图:

[[[[UIApplication sharedApplication] delegate] window] setRootViewController:chat];

因为其他方面我有层次结构问题

,其视图不在窗口层次结构中!

我打电话给这样的方法:

 notificationViewController* notification = [[notificationViewController alloc]init];  
[self.view addSubview:[notification makeButtonNotification]];

现在显示视图,这不是问题。

但是当出现时我有一个带有故事板的按钮,用于打开左侧面板菜单并且无效。

还有其他一些解决方案吗?

感谢。

1 个答案:

答案 0 :(得分:0)

您的makeButtonNotification正在创建并返回UIButton,但您的返回类型设置为UIView?另外,你有按钮的类属性吗?因为您没有在该方法中创建本地实例吗?

您在哪里调用此goChat方法,我认为它在appDelegate之外?

您将按钮帧原点设置为280,您确定这是在self.view的范围内吗?您将它添加到哪个视图中?