Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用UISegmentedControl作为按钮

使用UISegmentedControl作为按钮
EN

Stack Overflow用户
提问于 2010-07-16 11:29:09
回答 8查看 12.6K关注 0票数 7

在我的代码中,我使用一个UISegmentedControl作为“按钮”,只有一个段,并且momentary属性设置为YES。在iOS 4之前的软件开发工具包版本中,这不是问题,但现在iOS 4似乎要求至少有2个段。下面的代码抛出一个异常:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NSArray *titles = [NSArray arrayWithObject:@"Button Title"];
myButton = [[UISegmentedControl alloc] initWithItems:titles];

现在,在Interface Builder中,您甚至不能创建少于2个段的UISegmentedControl。它在构建时记录以下错误:

“分段控件的分段属性必须大于或等于2。”

我有点被难住了。有解决这个问题的办法吗?我尝试创建一个有两个按钮的UISegmentedControl,然后以编程方式删除其中一个按钮,这样就可以了,因为它不会导致应用程序崩溃。我在iOS 3中有一个按钮,但在iOS 4中什么也没有。有什么想法吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-08-22 06:02:52

真的很奇怪。它在iOS4模拟器和设备中仍然可以很好地工作(这是我的代码中的一个真正的工作片段):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NSArray *laterContent = [NSArray arrayWithObjects: @"Maybe later", nil];
UISegmentedControl *later = [[UISegmentedControl alloc] initWithItems:laterContent];
CGRect frame = CGRectMake(  20,
                          98,
                          self.alert.bounds.size.width/2 - 30,
                          30);

later.frame = frame;

later.selectedSegmentIndex = -1;

[later addTarget:self action:@selector(laterAction:) forControlEvents:UIControlEventValueChanged];

later.segmentedControlStyle = UISegmentedControlStyleBar;
later.tintColor = [UIColor colorWithRed:130.0f/255.0f green:74.0f/255.0f blue:54.0f/255.0f alpha:0.8f];
later.momentary = YES;
later.alpha = 0.9;
票数 6
EN

Stack Overflow用户

发布于 2010-08-10 11:25:00

你有没有试过这个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[myButton removeAllSegments];
[myButton insertSegmentWithTitle:@"Press this" atIndex:0 animated:NO];
票数 7
EN

Stack Overflow用户

发布于 2010-08-23 19:43:27

这不完全是一个与代码相关的解决方案,但是:我遇到了类似的问题,并最终在Photoshop中绘制了我自己的外观相似的资源。这并不是很难做到,并删除了一个特别糟糕的“代码气味”,IMO。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3264331

复制
相关文章
【C++】运算符重载 ⑥ ( 一元运算符重载 | 后置运算符重载 | 前置运算符重载 与 后置运算符重载 的区别 | 后置运算符重载添加 int 占位参数 )
讲解了 前置运算符 的 重载 , 前置运算符就是 ++Object 或 --Object , 一元运算符 在 对象的 前面 ;
韩曙亮
2023/10/15
1550
【C++】运算符重载 ⑥ ( 一元运算符重载 | 后置运算符重载 | 前置运算符重载 与 后置运算符重载 的区别 | 后置运算符重载添加 int 占位参数 )
【C++】运算符重载 ⑥ ( 一元运算符重载 | 后置运算符重载 | 前置运算符重载 与 后置运算符重载 的区别 | 后置运算符重载添加 int 占位参数 )
讲解了 前置运算符 的 重载 , 前置运算符就是 ++Object 或 --Object , 一元运算符 在 对象的 前面 ;
韩曙亮
2023/10/15
1410
【C++】运算符重载 ⑥ ( 一元运算符重载 | 后置运算符重载 | 前置运算符重载 与 后置运算符重载 的区别 | 后置运算符重载添加 int 占位参数 )
C++重载一元前缀/后缀运算符
重载一元前缀运算符的时候,重载函数应该是这样的: operator++() 而重载一元后缀运算符的时候,重载函数是这样的 operator++(int) 注意,这里的参数不管是在声明还是在实现中,都不需要带上变量名。 并且,重载后缀运算符的时候,需要返回变量在被改变之前的值。
灯珑LoGin
2022/10/31
3230
【C++】运算符重载 ⑭ ( 逻辑与 && 运算符重载 | 逻辑或 || 运算符重载 | 完整代码示例 )
逻辑与 && 和 逻辑或 || 运算符 是 可以重载的 , 这两个操作符是 特殊操作符 ;
韩曙亮
2023/10/15
1830
【C++】运算符重载 ⑭ ( 逻辑与 && 运算符重载 | 逻辑或 || 运算符重载 | 完整代码示例 )
【C++】运算符重载 ⑦ ( 一元运算符重载 | 后置运算符重载 | 使用 全局函数 实现 后置 ++ 自增运算符重载 | 使用 成员函数 实现 后置 -- 自减运算符重载 )
韩曙亮
2023/10/15
2100
【C++】运算符重载 ⑦ ( 一元运算符重载 | 后置运算符重载 | 使用 全局函数 实现 后置 ++ 自增运算符重载 | 使用 成员函数 实现 后置 -- 自减运算符重载 )
【C++】运算符重载 ② ( 类内部定义云算符重载 - 成员函数 | 类外部定义运算符重载 - 全局函数 | 可重载的运算符 )
当使用 + 将 个对象相加时 , C++ 编译器会查找是否有定义运算符重载函数 ;
韩曙亮
2023/10/15
2700
【C++】运算符重载 ⑤ ( 一元运算符重载 | 使用 成员函数 实现 前置 ++ 自增运算符重载 | 使用 成员函数 实现 前置 - - 自减运算符重载 )
韩曙亮
2023/10/15
1920
【C++】运算符重载 ⑤ ( 一元运算符重载 | 使用 成员函数 实现 前置 ++ 自增运算符重载 | 使用 成员函数 实现 前置 - - 自减运算符重载 )
【C++】运算符重载 ④ ( 一元运算符重载 | 使用 全局函数 实现 前置 ++ 自增运算符重载 | 使用 全局函数 实现 前置 - - 自减运算符重载 )
为了使全局函数中能访问 Student 类的私有成员 , 需要将该全局函数声明为 友元函数 ;
韩曙亮
2023/10/15
2080
【C++】运算符重载 ④ ( 一元运算符重载 | 使用 全局函数 实现 前置 ++ 自增运算符重载 | 使用 全局函数 实现 前置 - - 自减运算符重载 )
python类的继承与运算符重载
Officially, CPython has no rule at all for when exactly overridden method of subclasses of built-in types get implicitly called or not. As an approximation, these methods are never called by other built-in methods of the same object. For example, an overridden __getitem__() in a subclass of dict will not be called by e.g. the built-in get() method.
哒呵呵
2018/08/06
8740
【C++】运算符重载案例 - 字符串类 ⑤ ( 重载 大于 > 运算符 | 重载 小于 < 运算符 | 重载 右移 >> 运算符 - 使用全局函数重载 | 代码示例 )
左移 << 操作符 cout << s << endl , 是将 s 对象输出到 cout 标准输出流中 ;
韩曙亮
2023/10/15
5480
C++重载运算符练习--对people类重载“= =”运算符和“=”运算符
题目描述 对people类重载“= =”运算符和“=”运算符,“==”运算符判断两个people类对象的id属性是否相等;“=”运算符实现people类对象的赋值操作。 代码如下 #include<iostream> #include<string> using namespace std; class Data{ public: Data(){} Data(int yy,int mm,int dd){ year=yy; month=mm; day=dd;
Enterprise_
2018/05/18
3.2K2
C++重载运算符练习--对people类重载“= =”运算符和“=”运算符
题目描述 对people类重载“= =”运算符和“=”运算符,“==”运算符判断两个people类对象的id属性是否相等;“=”运算符实现people类对象的赋值操作。 代码如下 #include<iostream> #include<string> using namespace std; class Data{ public: Data(){} Data(int yy,int mm,int dd){ year=yy; month=mm; day=dd;
Enterprise_
2019/03/01
3810
C++重载运算符练习--对people类重载“= =”运算符和“=”运算符
【C++】运算符重载 ⑧ ( 左移运算符重载 | 友元函数 / 成员函数 实现运算符重载 | 类对象 使用 左移运算符 )
上述 运算符重载 既可以使用 成员函数 进行重载 , 又可以使用友元函数进行重载 ;
韩曙亮
2023/10/15
2870
【C++】运算符重载 ⑧ ( 左移运算符重载 | 友元函数 / 成员函数 实现运算符重载 | 类对象 使用 左移运算符 )
【Groovy】Groovy 运算符重载 ( 运算符重载 | 运算符重载对应方法 )
Groovy 类可以进行运算符重载 , 任何一个类都可以使用预定义的 运算符 进行运算 , 如 " + - * / " 加减乘除 操作 , Groovy 中支持
韩曙亮
2023/03/30
2.8K0
【Groovy】Groovy 运算符重载 ( 运算符重载 | 运算符重载对应方法 )
运算符重载之左移运算符重载
左移运算符重载 #include<iostream> using namespace std; class wood { friend ostream& operator<<(ostream& cout, wood& d); public: wood(int num):num(num){} private: int num; }; //左移运算符重载只能用全局函数 ostream& operator<<(ostream& cout, wood& d) { cout << "木头的数量为" << d.
大忽悠爱学习
2021/02/22
5350
运算符重载之递增运算符重载
递增运算符重载 #include <iostream> using namespace std; //声明类 class wood { friend ostream& operator<<(ostream& cout, wood myint); public: //默认构造函数将m_Num初始化为0 wood() { m_Num = 0; } //前置递增++ //如果不用引用,就是调用重载函数,调用完之后就销毁(因为放在栈区) //引用是别名,调用地址 wood& opera
大忽悠爱学习
2021/02/22
3690
【C++】成员函数重载二元和一元运算符
重载双目运算符时,运算符函数中应该具有两个参数,若运算符函数作为类的成员函数(当运算符重载函数作为类的成员函数时,要求操作数左边必须是一个对象,而函数的参数可以是同类的对象也可以是普通的变量),则只需要一个参数。
谙忆
2021/01/21
5380
【C++】成员函数重载二元和一元运算符
【C++】运算符重载案例 - 字符串类 ④ ( 重载 双等号 == 运算符 | 重载 不等号 != 运算符 | 代码示例 )
韩曙亮
2023/10/15
3350
运算符重载之加号运算符重载
加号运算符重载 运算符重载:对已有运算符的重新定义,赋予其另一种功能,以适应不同的数据类型 #include<iostream> using namespace std; class pig{ public: int kilogram; //重量 int price; //价钱 //成员函数重载+号运算符 //pig operator+(pig& p) //{ // pig temp; // temp.kilogram = this->kilogram + p.kilogram;
大忽悠爱学习
2021/02/22
6730
运算符的重载
这是一串简单的类代码,比较重要的是sum()函数,注意到了参数是引用但是返回类型不是引用。将参数声明作为引用的目的只是为了提高效率,传递引用速度更快,使用的内存更少。 看一下输出内容QAQ
用户8247415
2021/04/13
5100

相似问题

如何重写运算符<

10

如何重写运算符?

20

重写运算符+

20

如何为多态重写运算符

30

Ruby重写运算符

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文