Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.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_Uiview_Uibutton_Activity Indicator - Fatal编程技术网

Ios 仅在单击按钮后显示活动指示器

Ios 仅在单击按钮后显示活动指示器,ios,uiview,uibutton,activity-indicator,Ios,Uiview,Uibutton,Activity Indicator,您好,我正在尝试通过单击按钮查看活动指示器。我试过了,但我有一些问题。如果我将活动指示器拖到我的故事板上,但在运行我的应用程序时它是可见的,我希望在单击按钮时显示它。在我的应用程序中,我提供了照片上传选项。所以如果他们点击上传按钮,我想查看活动指示器 这是代码,我已经累了,但它不工作 这是我的h文件,我在其中实现了活动指示器和按钮 - (IBAction)click:(id)sender; @property (strong, nonatomic) IBOutlet UIActivityInd

您好,我正在尝试通过单击按钮查看活动指示器。我试过了,但我有一些问题。如果我将活动指示器拖到我的故事板上,但在运行我的应用程序时它是可见的,我希望在单击按钮时显示它。在我的应用程序中,我提供了照片上传选项。所以如果他们点击上传按钮,我想查看活动指示器

这是代码,我已经累了,但它不工作

这是我的h文件,我在其中实现了活动指示器和按钮

- (IBAction)click:(id)sender;
 @property (strong, nonatomic) IBOutlet UIActivityIndicatorView *spinner;
这是我在我的m文件中使用的代码

-(void)temp
{
 spinner = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
 spinner.frame = CGRectMake(0.0, 0.0, 40.0, 40.0);
 [spinner setCenter:CGPointMake(480/2.0, 128.0/2)]; // (mid of screen) I do this because I'm in landscape mode
 [self.view addSubview:spinner];
 [spinner startAnimating];
 [spinner release];
}
我在我的按钮中调用这个函数

- (IBAction)click:(id)sender {
[self temp];
}
而且我还有一些其他的问题我看到了代码问题是

[yourView addSubview:spinner]; 
在yourview中,我给出了uiviewcontroller的名称,但其给出的错误我已改为

[self.view addSubview:spinner];

请告诉我我哪里做错了,正确的方法是什么。。首先感谢您,因为您已经为微调器配置了IBOutlet,所以不要在temp方法中分配新的。修改临时方法,使其如下所示:

  -(void)temp
    {
      spinner.frame = CGRectMake(0.0, 0.0, 40.0, 40.0);
     [spinner setCenter:CGPointMake(480/2.0, 128.0/2)]; // (mid of screen) I do this because I'm in landscape mode
     [self.view addSubview:spinner];
     [spinner startAnimating];
    }

假设微调器已连接到视图。 在您的
viewDidLoad
中,您可以设置您的视图,然后当您点击按钮时,它将显示:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.spinner = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    self.spinner.frame = CGRectMake(0.0, 0.0, 40.0, 40.0);
    [self.spinner setCenter:CGPointMake(480/2.0, 128.0/2)]; // (mid of screen) I do this because I'm in landscape mode
    self.spinner.hidden = YES;
}

- (IBAction)click:(id)sender
{
    self.spinner.hidden = NO;
    [self.spinner startAnimating];

     // Additionally you can show spinner in top bar
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
}

- (void)stopSpinner
{
    if (self.spinner.isAnimating) {
        self.spinner.hidden = YES;
        [self.spinner stopAnimating];

        // And hide it when you don't need it anymore
        [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
    }
}

我建议您看看这个答案:重新定位微调器。

如果您使用的是界面生成器,如情节提要XIB,则只需将框架和所有内容本身设置在那里。如果您想在运行时更改它的属性,只需使用您使用的IBOutlet。 您不需要再次实例化,只需使用它的getter和setter来相应地使用它。所以在这里你可以做

- (IBAction)click:(id)sender 
  {
    [self.spinner startAnimating];
  }
并在使用前合成微调器

如果您想以编程方式使用它,请从XIB中删除它,并删除与之对应的所有引用。并在.h文件中声明

UIActivityIndicatorView *spinner;
或者你可以做一个财产

@property(nonatomic, strong)UIActivityIndicatorView *spinner;

只需使用您自己的代码。

伙计,我遇到了问题…我认为您在白色视图上添加了白色活动指示器,这就是为什么它没有显示出来,但它确实在那里…使用其他样式
UIActivityIndicatorViewStyleGray

-(void)temp
{
 spinner = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
 spinner.frame = CGRectMake(0.0, 0.0, 40.0, 40.0);
 [spinner setCenter:CGPointMake(480/2.0, 128.0/2)]; // (mid of screen) I do this because I'm in landscape mode
 [self.view addSubview:spinner];
 [spinner startAnimating];
 [spinner release];
}

单击该按钮时会发生什么情况?不会发生任何变化活动指示器不工作@SuryakantSharmadid活动指示器根本不显示?如果您的微调器已连接到视图,为什么需要将其添加为子视图?没有意义。或者,您也可以创建一个未连接到视图的新视图。不显示@SuryakantSharmapls告诉您如何在不使用iBootlet的情况下制作。从XIB中完全移除微调器,并使用原始的temp方法。它应该在删除后工作,它的im获取错误,如使用未声明的标识符“微调器”,因此请告诉我在哪里必须声明微调器@Ratikanata Patrainstead of spinner use self.spinnerya我尝试过一个它的给定错误,如对象微调器不在viewcontrolleri中我使用了IBOutlet活动指示器请告诉我如何制作我移除IBOutlet它的显示错误您可以使用情节提要“ctrl+拖动微调器到正确的输出”。@Suryankant Sharama谢谢您的工作,但我希望给活动控制器一段时间的面试。请告诉我如何制作它,我没有收到您的回复。使用-(void)性能选择器:(SEL)带object的选择器:(id)argument afterDelay:(NSTimeInterval)delay;