您好我试图使用分段控件在三个地图视图之间交换,但它不起作用。
我的IBAction方法如下。
- (IBAction)segmentSwitch:(id)sender {
NSLog(@"inside segmented switch");
NSLog(@"selected segment %@",selectedSegment);
if (selectedSegment == 0) {
mapView.mapType = MKMapTypeStandard;
}
else{
mapView.mapType = MKMapTypeHybrid;
}
}
我已将UISegementedControl声明为插座并将其连接到xib视图。我还将此方法与内部/外部的触摸/触摸相关联。它仍然不会打印上面给出的NSLog命令。这意味着根本没有访问此方法?
答案 0 :(得分:4)
如何在IB中为处理两个以上段的人设置UISegmentedControl的快速摘要:
IBOutlet UISegmentedControl *segmentControl;
(或将其设置为@property)- (IBAction)segmentedControlIndexChanged:(id)sender;
-(IBAction)segmentedControlIndexChanged:(id)sender {
NSLog(@"segmentedControlIndexChanged");
switch (segmentControl.selectedSegmentIndex)
{
case 0:
{
NSLog(@"dateSegmentActive");
dateSegmentActive = YES;
noteSegmentActive = NO;
typeSegmentActive = NO;
userIDSegmentActive = NO;
[yourTable reloadData];
}
break;
case 1:
{
NSLog(@"noteSegmentActive");
dateSegmentActive = NO;
noteSegmentActive = YES;
typeSegmentActive = NO;
userIDSegmentActive = NO;
[yourTable reloadData];
}
break;
case 2:
{
NSLog(@"typeSegmentActive");
dateSegmentActive = NO;
noteSegmentActive = NO;
typeSegmentActive = YES;
userIDSegmentActive = NO;
[yourTable reloadData];
}
break;
case 3:
{
NSLog(@"userIDSegmentActive");
dateSegmentActive = NO;
noteSegmentActive = NO;
typeSegmentActive = NO;
userIDSegmentActive = YES;
[yourTable reloadData];
}
break;
default:
break;
}
}
在最近的iOS版本中,您需要针对每种情况的大括号:否则您将收到错误。这也显示了一些bool标记以跟踪哪个段处于活动状态,可能是您的willDisplayCell方法。
答案 1 :(得分:1)
您应该使用ValueChanged操作来检测段的切换。
selectedSegment
是UISegmentedControl
吗?
然后你的代码应该是:
- (IBAction) segmentSwitch:(id)sender {
if (self.selectedSegment.selectedSegmentIndex == 0) {
mapView.mapType = MKMapTypeStandard;
} else{
mapView.mapType = MKMapTypeHybrid;
}
}
答案 2 :(得分:1)
希望您选择了正确的方法ValueChanged
,并且您已正确连接方法的出口。
您现在唯一需要做的就是用代码替换代码。
- (IBAction)segmentSwitch:(UISegmentedControl *)sender
{
NSLog(@"inside segmented switch");
NSLog(@"selected segment %d",sender.selectedSegmentIndex);
if (sender.selectedSegmentIndex == 0)
{
mapView.mapType = MKMapTypeStandard;
}
else
{
mapView.mapType = MKMapTypeHybrid;
}
}
尝试用您的代码替换此代码。
希望这会对你有所帮助。