【问题标题】:Display activity indicator only after clicking the button仅在单击按钮后显示活动指示器
【发布时间】:2014-02-20 06:49:59
【问题描述】:

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

这是我已经厌倦但无法正常工作的代码。

这是我实现活动指示器和按钮的 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];
}

我还有一些其他问题我看到了代码here问题是

[yourView addSubview:spinner]; 

在你的视图中,我给出了我的 uiviewcontroller 名称,但它给出的错误我已更改为

[self.view addSubview:spinner];

请告诉我我做错了什么以及正确的方法是什么..谢谢

【问题讨论】:

  • 点击那个按钮会发生什么?
  • 什么都没有发生它保持不变活动指示器不工作@SuryakantSharma
  • 活动指示器根本没有显示吗?
  • 如果你的视图连接了微调器,为什么需要将它添加为子视图?毫无意义。或者,您可以创建一个未连接到您的视图的新视图。
  • 不是它不显示@SuryakantSharma

标签: ios uiview uibutton activity-indicator


【解决方案1】:

伙计,我遇到了问题...我认为您在白色视图上添加了白色活动指示器,这就是为什么它没有显示但它确实存在所以...使用其他样式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];
}

【讨论】:

  • @Suryankant Sharama 感谢它的工作,但我希望对活动控制器进行一些时间采访,请告诉我如何制作它
  • 对不起,我没有得到你。
  • 使用 - (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay;
【解决方案2】:

首先,因为您已经有一个用于微调器的 IBOutlet,所以不要在 temp 方法中分配一个新的。修改你的 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];
    }

【讨论】:

  • 请告诉如何在不使用 iboutlet 的情况下制作
  • 从 XIB 中完全移除微调器并使用您原来的临时方法。它应该工作
  • 在删除它之后我得到了错误,比如使用未声明的标识符“微调器”,所以请告诉我我必须在哪里声明微调器@Ratikanata Patra
  • 使用 self.spinner 代替微调器
  • 是的,我已经尝试过它的错误,比如对象微调器不在视图控制器中
【解决方案3】:

如果您正在使用 StoryboardXIB 之类的界面构建器,那么只需在其中设置框架和 evrything。如果您想在运行时更改它的属性,只需使用您使用过的 IBOutlet。 您无需再次实例化,只需使用它的 getter 和 setter 来相应地使用它。所以在这里你可以做到。

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

并在使用前合成spinner

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

UIActivityIndicatorView *spinner;

或者你可以创建一个属性

@property(nonatomic, strong)UIActivityIndicatorView *spinner;

只需使用您自己的代码。

【讨论】:

    【解决方案4】:

    假设您的微调器连接到您的视图。 在您的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;
        }
    }
    

    我建议你看看这个答案:How to get orientation-dependent height and width of the screen? 重新定位你的微调器。

    【讨论】:

    • 我在没有使用 IBOutlet 活动指示器的情况下完成了它,请告诉我如何制作它我删除了 IBOutlet 它显示错误
    • 您可以使用情节提要 'ctrl+拖动您的微调器到正确的插座。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多