UISegmentedControl单击事件在IOS 6中不起作用

时间:2012-10-10 10:16:09

标签: iphone ios6 uisegmentedcontrol

我创建了一个mapview,其中包含页面卷曲功能。 mapview有一个工具栏,带有页面卷曲按钮。单击按钮时,mapview页面会卷曲。这是代码。

-(IBAction) onPageCurl:(id)sender{

pageCurlViewController = [[MyMapViewPageCurlViewController alloc] initWithNibName:@"MyMapViewPageCurlViewController" bundle:nil];
[pageCurlViewController.navigationController.toolbar setHidden:NO];
[pageCurlViewController setModalTransitionStyle:UIModalTransitionStylePartialCurl];
[pageCurlViewController setToolbarItems:toolbarItems];
[[self navigationController] presentModalViewController:pageCurlViewController animated:YES];

[pageCurlViewController getMapView:&mapView];
[pageCurlViewController release];
}

当mapview页面卷曲时,我下面有一个新的viewcontroller。新视图控制器具有分段控件,包含3个段。

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.

[self.navigationController.toolbar setHidden:NO];
[directionSearchSegmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
directionSearchSegmentedControl.selectedSegmentIndex = selectedIndex;
UIBarButtonItem *directionSearchSegmentedControlButton = [[[UIBarButtonItem alloc] initWithCustomView:directionSearchSegmentedControl] autorelease];

NSArray *toolbarItems = [NSArray arrayWithObjects: navigatorButton , flexibleSpace, directionSearchSegmentedControlButton, flexibleSpace, pageCurlButton, nil];
[self setToolbarItems:toolbarItems];
[self.navigationController.toolbar setHidden:NO];


}

在点击分段控制器中的每个段时,我有地图的标准/卫星/混合视图。

- (void)segmentAction:(id)sender
{
[self dismissModalViewControllerAnimated:YES];
    if([sender selectedSegmentIndex] == 0){
        selectedIndex = 0;
        pageCurlMapView.mapType = MKMapTypeStandard;
    }
    if([sender selectedSegmentIndex] == 1){
        selectedIndex = 1;
        pageCurlMapView.mapType = MKMapTypeSatellite;
    }
    if([sender selectedSegmentIndex] == 2){
        selectedIndex = 2;
        pageCurlMapView.mapType = MKMapTypeHybrid;
    }
    if([sender selectedSegmentIndex] == 2){

    }
directionSearchSegmentedControl.momentary = YES;
selectedIndex = directionSearchSegmentedControl.selectedSegmentIndex;
}

页面卷曲功能正常工作。当页面卷曲时,如前所述,我在新视图中有一个分段控件。但是分段控件在IOS 6中无法正常工作。我已经调试并检查过了。在单击片段时,控件不会进入事件方法。 它在以前版本的IOS中仍然可以正常工作,但在IOS 6中却没有。不能弄明白,出了什么问题。需要帮助。

2 个答案:

答案 0 :(得分:0)

如果您在应用启动时查看Xcode控制台,您会看到如下消息:

应用程序在应用程序启动结束时应具有根视图控制器

如果是这样,那么您的问题可能是由于需要为iOS 6设置根视图控制器的方式的变化。

有关如何解决问题的信息,请参阅here

答案 1 :(得分:0)

对不起,如果这有点晚了,但我一直在我的应用程序中做类似的事情。老实说,我只是使用一个简单的切换方法来改变地图类型。代码如下。

- (IBAction)toggle:(id)sender {

switch ([sender selectedSegmentIndex]) {
    case 0:
    {
        [self.mapView setMapType:MKMapTypeStandard];
    }break;
    case 1:
    {
        [self.mapView setMapType:MKMapTypeHybrid];
    }break;
    case 2:
    {
        [self.mapView setMapType:MKMapTypeSatellite];
    }break;
  }

}

现在我还没有尝试将它用于多个视图控制器,因此这可能只适用于一个视图控制器。我刚刚开始在iOS上编程,所以请耐心等待..我会尝试将页面卷曲效果添加到我的应用程序中,但到目前为止我所拥有的只是一个地图视图和一个按钮,当它被推动时,放大到用户位置和用户可以更改地图类型..

P.S。这是一个分段控件,设置为名为“toggle”的值更改操作,如果这有助于......