【问题标题】:add custom switch to iphone view将自定义开关添加到 iphone 视图
【发布时间】:2023-03-14 11:54:01
【问题描述】:

我正在使用以下代码来创建自定义开关:

UISegmentedControl* switchView=[[UISegmentedControl alloc] 
                                initWithItems:[[NSMutableArray alloc] initWithObjects:@"On",@"Off",nil]];
[switchView setFrame:CGRectMake(20,365,140,28)];
switchView.selectedSegmentIndex=0;
switchView.segmentedControlStyle=UISegmentedControlStyleBar;
[switchView setImage:[UIImage imageNamed:@"onSelected.png"] forSegmentAtIndex:0];
[switchView setImage:[UIImage imageNamed:@"off.png"] forSegmentAtIndex:1];
[switchView addTarget:self action:@selector(checkOnOffState:) forControlEvents:UIControlEventValueChanged];

我现在想将此控件添加到我的一个屏幕(我相信正确的术语是 ViewController?)。我将如何在 Xcode 4.3 中执行此操作?

我查看了其他一些帖子,但找不到任何有用的东西。例如,How do I add a custom view to iPhone app's UI? 提出了类似 [[myVC view] addSubview:myView]; 的建议 和How to customize UISwitch button in iphone? 建议 self.navigationItem.titleView=switchView; 如果可能,您能否解释一下为什么这些方法不起作用?谢谢。

【问题讨论】:

    标签: iphone user-interface custom-controls


    【解决方案1】:

    您需要为您的开关创建一个类,它是您的 UISegmentControl 的子类, 否则你也可以直接在你的vc中添加这段代码。

    在它的 initWithFrame 方法中添加这段代码

    然后在你的 VC 中使用它

    -(void)viewDidLoad{
      urCustomSwitch  = [urCustomSwitch alloc] initWithFrame:CGRectMake(20,365,140,28)];
      [self.view addSubview:urCustomSwitch];
    }
    

    如果您要创建自定义可重用类,这将满足您的目的。

    【讨论】:

    • 感谢您的回复。我应该让这个类成为 UITableViewController、UITableViewCell、AppDelegate、CIColor 或 CIContext 的子类吗?虽然我应该把它作为 UIView 的子类,但这不是选项之一。再次感谢。
    • 你可以让它成为UISegmentControl的子类或者UIView也是一个选项
    • 这对我不起作用,因为我的自定义开关没有 alloc 方法。我必须做些什么才能使用它,还是必须以其他方式实例化它?
    • 如果您将任何 UIControl 或 UIView 子类化,您需要重写此方法并在其中编写代码。
    【解决方案2】:

    如果您在InterfaceBuilder(.xib 文件)中添加此开关控件,即UISegmentedControl

    这项任务对你来说会容易得多。

    【讨论】:

    • 你的意思是把我的自定义类作为 UISegmentedControl 的子类添加到 InterfaceBuilder。我可以通过创建 .xib 文件来做到这一点吗?谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多