【问题标题】:Custom UIView size position and IBaction自定义 UIView 大小位置和 IBaction
【发布时间】:2013-10-08 18:23:32
【问题描述】:

晚上好,

我正在开发的应用程序必须在我的 ViewController 上以精确的位置和大小显示(单击按钮时)自定义容器。

此容器将加载 2 个复选框(我知道我可以使用 UISwitchControl 并使用 PNG 修改 2 个状态)和一个按钮“提交”。

我是 iOS 开发新手,请帮助我创建此布局(请参阅附件)以及如何在我按下提交时检查哪些复选框被选中,非常感谢示例代码。

谢谢大家。

【问题讨论】:

    标签: ios objective-c uiview cgrectmake


    【解决方案1】:

    您可以关注BOOL 变量。当您单击 Item1 时,它应该是 YES,当您单击 Item2 时,它应该是 NO。代码如下,

    BOOL item1ORitem2 = YES;
    UIView *containerView = [[UIView alloc] init];
    [containerView setFrame:CGRectMake(0, 0, 200, 200)];
    [self.view addSubview:containerView];
    
    UIButton *item1btn = [UIButton buttonWithType:UIButtonTypeCustom];
    [item1btn setFrame:CGRectMake(10, 20, 50, 30)];
    [item1btn addTarget:self action:@selector(item1btnAction) forControlEvents:UIControlEventTouchUpInside];
    [containerView addSubview:item1btn];
    
    UIButton *item2btn = [UIButton buttonWithType:UIButtonTypeCustom];
    [item2btn setFrame:CGRectMake(10, 60, 50, 30)];
    [item2btn addTarget:self action:@selector(item2btnAction) forControlEvents:UIControlEventTouchUpInside];
    [containerView addSubview:item2btn];
    
    UIButton *submitBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    [submitBtn setFrame:CGRectMake(10, 60, 50, 30)];
    [submitBtn addTarget:self action:@selector(submitBtnAction) forControlEvents:UIControlEventTouchUpInside];
    [containerView addSubview:submitBtn];
    

    方法是,

    -(void)item1btnAction
    {
        item1ORitem2 = YES;
    }
    -(void)item2btnAction
    {
        item1ORitem2 = NO;
    }
    -(void)submitBtnAction
    {
        NSLog(@"item1ORitem2");
    }
    

    【讨论】:

    • 感谢您的回答,是否可以通过使用 nib 文件来做到这一点?还有 .h 和 .m 文件?我的意思是:将视图创建为笔尖并在控制类中设置所有逻辑?
    【解决方案2】:

    1) 在您的 xib 文件中,您需要拖放 2 个按钮并将其类型设置为自定义。

    2) 您应该选中和取消选中 2 张图片。

    3)然后您需要将按钮的状态更改为正常/默认并将图像设置为 checked.png(或您的图像名称)。

    4) 然后将状态更改为选中并将图像设置为 unchecked.png(或您的未选中框图像的名称)。

    所以现在您有 2 张图片,其中一张用于选定状态,另一张用于正常状态。

    5) 您可以分别保留两个按钮的方法 例如:

    -(IBAction)button1Pressed:(id)sender {
    UIButton *btn = (UIButton *)sender;
    if (btn.isSelected) {
        [btn setSelected:NO];
    }
    else {
        [btn setSelected:YES];
    }
    }
    

    这将在您按下按钮时切换按钮状态。

    您可以在两个按钮上调用相同的方法。

    更新

    6) 现在您可以使用此链接在 Interface Builder 中设置每个复选框按钮的出口: Setting Outlets.

    7) 在提交按钮方法中,您可以使用以下代码检查按钮是否被选中。假设您的复选框 uibutton ivar 是名称 check1 & check2

    -(IBAction)submitPressed:(id)sender {
    if (check1.isSelected) {
        //Check button is unchecked
    }
    else {
        //Check button is checked
    }
    
    if (check2.isSelected) {
        //Check button is unchecked
    }
    else {
        //Check button is checked
    }
    
    }
    

    完成!祝你好运..

    【讨论】:

    • 谢谢你的回答,但是如何让这个视图出现并设置它在我的 viewController 上的位置?
    猜你喜欢
    • 1970-01-01
    • 2016-06-03
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多