Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 分色控制染色颜色_Ios_Uisegmentedcontrol - Fatal编程技术网

Ios 分色控制染色颜色

Ios 分色控制染色颜色,ios,uisegmentedcontrol,Ios,Uisegmentedcontrol,我正在更改所选线段的颜色。它工作正常,但在第一次触摸之前,uisegment control的“染色颜色”设置为默认值 这是更改选定线段颜色的方法。它可以正常工作,但是当片段第一次出现时。它是浅灰色的。然后,当我触摸它时,它开始按照我的需要正常工作 (此段控件作为子视图添加到uialertview) -(void)分段值已更改:(UISegmentedControl*)发送方 { 对于(int i=0;i您可以从视图的ViewDiLoad或ViewWillDisplay方法更改它吗?因为根据您的

我正在更改所选线段的颜色。它工作正常,但在第一次触摸之前,uisegment control的“染色颜色”设置为默认值

这是更改选定线段颜色的方法。它可以正常工作,但是当片段第一次出现时。它是浅灰色的。然后,当我触摸它时,它开始按照我的需要正常工作

(此段控件作为子视图添加到uialertview)

-(void)分段值已更改:(UISegmentedControl*)发送方
{

对于(int i=0;i您可以从视图的ViewDiLoad或ViewWillDisplay方法更改它吗?因为根据您的代码,当用户第一次触摸它时,它会更改。

您可以从视图的ViewDiLoad或ViewWillDisplay方法更改它吗?因为根据您的代码,当用户第一次触摸它时,它会更改。

您可以调用ode>SegmentControlValue在viewDidLoad方法中强制更改了
方法。如下所示:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.05 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
        [self segmentedControlValueChanged:segmentedControlOne];
    }); 

您可以在viewDidLoad方法中强制调用
segmentControlValueChanged
方法。如下所示:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.05 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
        [self segmentedControlValueChanged:segmentedControlOne];
    }); 
真的吗

我用这个代码解决了我的应用程序

- (void)viewDidAppear:(BOOL)animated

    {

        for(UIView *v in [self.view subviews] )
        {
            if([v isKindOfClass:[UISegmentedControl class]])
            {
               // ((UISegmentedControl*)v).enabled=NO;

                dispatch_async(dispatch_get_main_queue(),^{

                    for (int i=0; i<[ ((UISegmentedControl*)v).subviews count]; i++)

                    {

                        if ([[((UISegmentedControl*)v).subviews objectAtIndex:i]isSelected] )

                        {

                            [[((UISegmentedControl*)v).subviews objectAtIndex:i] setTintColor:[UIColor colorWithRed: 0/255.0 green:176/255.0 blue:223/255.0 alpha:1.0]];
                            //[[((UISegmentedControl*)v).subviews objectAtIndex:0]setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
                            //  break;

                        }
                        else
                        {
                            [[((UISegmentedControl*)v).subviews objectAtIndex:i] setTintColor:[UIColor whiteColor]];
                            //[[((UISegmentedControl*)v).subviews objectAtIndex:0]setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

                        }


                    }


                });

            }
        }

    }
-(void)视图显示:(BOOL)动画
{
对于(UIView*v在[self.view子视图]中)
{
if([v iskindof类:[UISegmentedControl类]])
{
//((UISegmentedControl*)v).enabled=否;
dispatch\u async(dispatch\u get\u main\u queue()^{
对于(int i=0;itruy此代码

我用这个代码解决了我的应用程序

- (void)viewDidAppear:(BOOL)animated

    {

        for(UIView *v in [self.view subviews] )
        {
            if([v isKindOfClass:[UISegmentedControl class]])
            {
               // ((UISegmentedControl*)v).enabled=NO;

                dispatch_async(dispatch_get_main_queue(),^{

                    for (int i=0; i<[ ((UISegmentedControl*)v).subviews count]; i++)

                    {

                        if ([[((UISegmentedControl*)v).subviews objectAtIndex:i]isSelected] )

                        {

                            [[((UISegmentedControl*)v).subviews objectAtIndex:i] setTintColor:[UIColor colorWithRed: 0/255.0 green:176/255.0 blue:223/255.0 alpha:1.0]];
                            //[[((UISegmentedControl*)v).subviews objectAtIndex:0]setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
                            //  break;

                        }
                        else
                        {
                            [[((UISegmentedControl*)v).subviews objectAtIndex:i] setTintColor:[UIColor whiteColor]];
                            //[[((UISegmentedControl*)v).subviews objectAtIndex:0]setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

                        }


                    }


                });

            }
        }

    }
-(void)视图显示:(BOOL)动画
{
对于(UIView*v在[self.view子视图]中)
{
if([v iskindof类:[UISegmentedControl类]])
{
//((UISegmentedControl*)v).enabled=否;
dispatch\u async(dispatch\u get\u main\u queue()^{

对于(int i=0;i我自己解决了这个问题。因为alertview只在[alertview show]之后创建所有视图。由于segmentcontrol尚未真正创建,所以不会检测到对segmentcontrol的颜色更改。所以我将segmentcontrol的颜色更改过程延迟到alertview创建之后

[alertview show];

double delayInSeconds = 0.01;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    [self performSelectorOnMainThread:@selector(segmentValueChanged:) withObject:segControl waitUntilDone:YES];

});

我自己就想出来了。因为alertview只在[alertview show]之后创建所有视图。因为segmentcontrol尚未真正创建,所以不会检测到对segmentcontrol的颜色更改。所以我所做的是将segmentcontrol的颜色更改过程延迟到alertview创建之后

[alertview show];

double delayInSeconds = 0.01;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    [self performSelectorOnMainThread:@selector(segmentValueChanged:) withObject:segControl waitUntilDone:YES];

});

首次创建/显示视图时,您如何设置色调?[self segmentValueChanged:segControl];我首先调用此方法。它会触发,但更改色调颜色时不会发生任何事情,很抱歉,我忘了提及此片段添加到UIAlertViews中。首次创建/显示视图时,您如何设置色调?[自分段值更改:分段控制];我首先调用此方法。它会触发,但在更改色调颜色时不会发生任何事情。很抱歉,我忘了提及此段添加到UIAlertview中。很抱歉,我忘了提及此段添加到UIAlertview中。另一段添加到主视图中,其内部视图显示,并且工作正常。遇到问题的是在e AlertView无论何时将其添加到任何视图中,您都需要添加其色调。很抱歉,我忘了提及此段添加到UIAlertview中。另一段添加到主视图中,其内部视图显示且工作正常。遇到问题的部分在AlertView中无论何时将其添加到任何视图中,您都需要添加其色调视图。感谢您的回答,但很抱歉,我没有提到它在AlertView中,即使我在uiview中也没有问题。这个问题让我在UIAlertView中没有任何线索谢谢您的回答,但很抱歉,我没有提到它在AlertView中,即使我在uiview中也没有问题。这个问题让我在在我的视野之内