【问题标题】:Can you nest an IBAction (button) inside of -(void)viewDidAppear:(BOOL)animated? How?您可以在 -(void)viewDidAppear:(BOOL)animated 内嵌套一个 IBAction(按钮)吗?如何?
【发布时间】:2012-10-19 08:38:40
【问题描述】:

我确定我需要我的按钮操作 (findMe) 成为 viewDidAppear 的一部分,并且不能将其作为单独的 IBAction,因为它有显示用户位置错误。

A:这可能吗?

B:这样做有意义吗?

C:它会是什么样子?

我知道错误的当前代码如下所示:

-(void)viewDidAppear:(BOOL)animated
{
  if (findMe == YES)
  {
    self.mapView.showsUserLocation = YES;
    [mapView setCenterCoordinate:mapView.userLocation.coordinate animated:YES];
  }
}

谢谢!

【问题讨论】:

    标签: xcode xcode4 xcode4.2 ibaction viewdidappear


    【解决方案1】:

    您的问题措辞非常混乱且不完整(请包括有错误的代码和确切的错误消息),但我会回答您可能会问的三件事。

    如果您的问题是您想在两个方法中使用相同的代码,请将两个方法的公共部分提取到第三种方法中,并让它们都调用它。

    - (IBAction) button {
        stuff
        [self commonPart];
    }
    
    - (void) viewDidAppear {
        stuff
        [self commonPart];
    }
    
    - (void) commonPart {
        stuff they both do
    }
    

    如果您的问题是您需要在 viewDidAppear 方法中了解有关 UI 状态的信息,则可以使用 IBOutlet 来引用相关控件。

    - (void) viewDidAppear {
        if (self.findMeButton.someThingYouWantToCheck) {
              self.mapView.showsUserLocation = YES;
              [mapView setCenterCoordinate:mapView.userLocation.coordinate animated:YES];
        }
    }
    

    如果您的问题是您需要存储按钮是否被按下,以便您以后可以根据它执行不同的操作,只需将 BOOL 实例变量添加到您的对象并在按钮按下 IBAction 中将其设置为 YES。

    这些是你想要做的吗?

    【讨论】:

    • 是的,我认为你的答案是我想要做的。我是初学者,对不起。我希望按钮在用户按下按钮的任何给定时间在 viewDidAppear 内执行“showsUserLocation”。所以,我不想存储它是否被按下,我只想让它在按下时立即做出反应。对不起,如果我让你感到困惑!
    • 你不能在另一个方法中执行一部分。您可以像我的第一个示例所示那样将该代码移动到单独的方法中,或者复制粘贴它。
    • 只是想谢谢你。第一部分为我解决了它,我完成了我想要的。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多