【问题标题】:Two Problems I'm having with UIButton and UIView我在使用 UIButton 和 UIView 时遇到的两个问题
【发布时间】:2010-04-10 17:06:33
【问题描述】:

我很久没有在 iPhone 上编程了,但我通过谷歌搜索遇到的问题慢慢掌握了它。不幸的是,我无法找到这些问题的答案。

我在 Xcode 3.2.2 中启动了一个新的基于 View 的应用程序,并立即添加了以下文件: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..?
}

我看不到如何发布附件,但如果有人认为这会有所帮助,我可以上传源代码。

非常感谢, 安迪

【问题讨论】:

    标签: iphone uiview uiimage modal-dialog


    【解决方案1】:

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

    如果您想在视图中添加一个按钮,请使用 IB 将其拖到那里,或者将代码从 drawRect: 移动到 viewDidLoad

    您通过以下方式从视图控制器呈现模式视图:

    [self presentModalViewController:viewController animated:YES];
    

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

    【讨论】:

    • 好的,这是一个好方法。它似乎确实绘制了按钮和背景颜色,而不是标题或背景图像......我的第二个问题有什么想法吗?谢谢,A
    • 看来 viewDidLoad 不是 UIView 的子类响应的方法。我把按钮放在了 awakeFromNib 中。我的代码现在看起来像这样: -(void)buttonPressed:(id)sender { newNib myModalVC = [[newNib alloc] init]; [自我presentModalViewController:myModalVC动画:YES];但是,这不起作用,因为“'myUIView' 可能无法响应'-presentModalViewController:animated:'”......该项目需要动态创建几个按钮,所以我想它们必须在 UIView 子类中制作,但我不能调用模态视图,因为这需要 UIViewController..*stuck :-?
    • 请注意我回答中的最后一条评论。你真的应该有一个视图控制器。视图的作用是绘制自己;视图控制器负责转换和协调数据。您拥有的代码很可能确实属于视图控制器。
    • 感谢保罗;我确实尝试将它全部放在 ViewController 中,并在 viewDidLoad 方法中制作按钮,但是我遇到了更多问题,因为 UIViewController 不喜欢“[self addSubview:button];” ---大概有另一种创建按钮的方法我还没有找到..?谢谢你帮我解决这个问题。一个
    • 一个视图控制器有一个视图属性,因此:[self.view addSubview:button];会工作的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多