Iphone 两个问题I';我用UIButton和UIView

Iphone 两个问题I';我用UIButton和UIView,iphone,uiview,uiimage,modal-dialog,Iphone,Uiview,Uiimage,Modal Dialog,我已经很长时间没有在iPhone上编程了,但通过谷歌搜索我遇到的问题,我慢慢地学会了编程。不幸的是,我还没有找到这些问题的答案 我在Xcode 3.2.2中启动了一个新的基于视图的应用程序,并立即添加了以下文件:myUIView.m和myUIView.h,它们是UIView的子类。在Interface Builder中,我将默认UIView的子类设置为myUIView 我在drawRect方法中制作了一个按钮 问题一:按钮的标题仅在我单击屏幕后出现,为什么 问题二:我想要按钮生成modalvie

我已经很长时间没有在iPhone上编程了,但通过谷歌搜索我遇到的问题,我慢慢地学会了编程。不幸的是,我还没有找到这些问题的答案

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

我在drawRect方法中制作了一个按钮

问题一:按钮的标题仅在我单击屏幕后出现,为什么

问题二:我想要按钮生成modalview-这可能吗

代码如下:

#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..?
}
我不知道如何发布附件,但如果有人认为这会有帮助,我可以上传源代码

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

如果要在视图上显示按钮,请使用IB将其拖动到那里,或将代码从
drawRect:
移动到
viewDidLoad

可以通过以下方式从视图控制器显示模式视图:

[self presentModalViewController:viewController animated:YES];

在按钮发送到视图控制器的操作方法中执行此操作。这应该表明您需要查看应用程序设计。

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

如果要在视图上显示按钮,请使用IB将其拖动到那里,或将代码从
drawRect:
移动到
viewDidLoad

可以通过以下方式从视图控制器显示模式视图:

[self presentModalViewController:viewController animated:YES];

在按钮发送到视图控制器的操作方法中执行此操作。这应该表明您需要查看应用程序设计。

好的,这是一个好方法。它似乎画的按钮和背景颜色,只是没有标题或背景图像。。。对我的第二个问题有什么想法吗?谢谢,AIt似乎viewDidLoad不是UIView子类响应的方法。我将按钮放在awakeFromNib中。我的代码现在看起来是这样的:-(void)按钮按下:(id)发送方{newNib myModalVC=[[newNib alloc]init];[self-presentModalViewController:myModalVC-animated:YES];}但是,这不起作用,因为“'myUIView'可能不响应“-presentModalViewController:animated:”。。。该项目需要动态创建几个按钮,因此我认为它们必须在UIView子类中创建,但我无法调用模态视图,因为这需要UIViewController..*卡住:-?请注意我答案中的最后一条注释。你真的应该有一个视图控制器。视图的作用是绘制自己;视图控制器负责转换和协调数据。您拥有的代码很可能真的属于视图控制器;我确实尝试过将其全部放在ViewController中,并在viewDidLoad方法中创建按钮,但是我遇到了进一步的问题,因为UIViewController不喜欢“[self-addSubview:button];”---可能还有一种创建按钮的替代方法我还没有找到。。?谢谢你帮我做这件事。视图控制器有一个视图属性,因此:[self.view addSubview:button];好的,这是个好方法。它似乎画的按钮和背景颜色,只是没有标题或背景图像。。。对我的第二个问题有什么想法吗?谢谢,AIt似乎viewDidLoad不是UIView子类响应的方法。我将按钮放在awakeFromNib中。我的代码现在看起来是这样的:-(void)按钮按下:(id)发送方{newNib myModalVC=[[newNib alloc]init];[self-presentModalViewController:myModalVC-animated:YES];}但是,这不起作用,因为“'myUIView'可能不响应“-presentModalViewController:animated:”。。。该项目需要动态创建几个按钮,因此我认为它们必须在UIView子类中创建,但我无法调用模态视图,因为这需要UIViewController..*卡住:-?请注意我答案中的最后一条注释。你真的应该有一个视图控制器。视图的作用是绘制自己;视图控制器负责转换和协调数据。您拥有的代码很可能真的属于视图控制器;我确实尝试过将其全部放在ViewController中,并在viewDidLoad方法中创建按钮,但是我遇到了进一步的问题,因为UIViewController不喜欢“[self-addSubview:button];”---可能还有一种创建按钮的替代方法我还没有找到。。?谢谢你帮我做这件事。视图控制器有一个视图属性,因此:[self.view addSubview:button];会有用的。