2010-04-10 53 views
1

我一直没有在iPhone上编程很长时间,但我通过Google搜索问题缓慢地捡起它。不幸的是,我一直无法找到这些答案。我与UIButton和UIView有两个问题

我已经在Xcode 3.2.2中启动了一个新的基于视图的应用程序,并立即添加了以下文件:myUIView.m和myUIView.h,它们是UIView的子类。在Interface Builder中,我将默认UIView的子类设置为myUIView。

我在drawRect方法中做了一个按钮。

问题一:按钮的标题只出现后,我点击屏幕,为什么?

问题二:我想让按钮产生模态视图 - 这可能吗?

的代码如下:

#import "myUIView.h" 
@implementation myUIView 
- (void)drawRect:(CGRect)rect { 
// Drawing code 
    button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    button.frame = CGRectMake(0,0,100,100); 
    [button setTitle:@"butty" forState:UIControlStateNormal]; 
    [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
    [self addSubview:button]; 
} 

-(void)buttonPressed:(id)sender{ 
    NSLog(@"Button pressed"); 
    //present modal view somehow..? 
} 

我看不出如何上传附件,但如果有人认为这将有助于我可以上传源。

非常感谢, 安迪

回答

1

drawRect:是自定义绘制。你不会经常需要这样做。您的按钮在发送之前不会被绘制drawRect:,可能在运行循环的下一次迭代中(即,当您单击视图时)。

如果您想在视图上使用按钮,请使用IB拖动它,或将代码从drawRect:移动到viewDidLoad

[self presentModalViewController:viewController animated:YES]; 

为此在您的按钮发送到您的视图控制器的操作方法:

您可以通过提出从视图控制器模式的看法。这应该表明你需要看看你的应用程序设计。

+0

好的,这是一个好方法。它似乎绘制的按钮和背景颜色,只是不是标题或背景图像... 我的第二个问题的任何想法? 谢谢,A – Andy 2010-04-10 18:47:33

+0

编辑回答... – 2010-04-10 18:57:39

+0

看来,viewDidLoad不是UIView的一个子类响应的方法。我把这个按钮放在awakeFromNib中。我的代码现在看起来像这样: - (void)buttonPressed:(id)sender { \t newNib * myModalVC = [[newNib alloc] init]; \t [self presentModalViewController:myModalVC animated:YES]; } 然而,这并不为工作“‘myUIView’不能为‘-presentModalViewController:动画:’回应” ...... 该项目需要进行动态生成的按钮,所以我想他们必须作出在UIView子类,但我不能调用模态视图,因为这需要一个UIViewController .. *卡住: - ?* – Andy 2010-04-10 21:01:00