麻烦在IBAction中使用if

时间:2011-01-10 15:28:08

标签: iphone cocoa ios ios4 if-statement

道歉,如果这是一个全新的问题,我在网上看了看,找不到简单的答案。

如果我的iPhone应用中没有填写字段(“googlemap”),我正试图让导航栏按钮消失。认为它只是一个if语句,我使用了下面的代码,导致按钮失去了所有的功能(它调用另一个视图)而不会消失。

-(IBAction)btnMapM
{
 if (googlemap != nil)
 {

 LocationInfo *ObjLocInfo = [self.LocationInfoArr objectAtIndex:0];
 LocationMap *ObjLocationMap = [[LocationMap alloc] initWithNibName:@"LocationMap" bundle:nil];
 ObjLocationMap.address =  ObjLocInfo->address;
 ObjLocationMap.latitude = ObjLocInfo->latitude;
 ObjLocationMap.longtitude = ObjLocInfo->longtitude;



 [self.navigationController pushViewController:ObjLocationMap animated:YES];
 [ObjLocationMap release];

}
}

这不像我想象的那么简单吗?如果没有,如果有人有时间指出我正确的方向,我真的很感激......: - S

谢谢,

尼克

3 个答案:

答案 0 :(得分:2)

我会回答这个假设,如果某个特定属性设置为nil,您希望按钮消失。 (检查我的answer here以获得更好的方法来检查属性是否为空。)

首先,确保您已使用

声明按钮的插座
IBOutlet UIButton *button;
头文件中的

,并在界面构建器中正确连接所有内容。这包括将按钮连接到button插座,将touchUpInside事件连接到IBAction。然后,将其用于viewDidLoad方法:

-(void) viewDidLoad {
    [super viewDidLoad];
    if (googlemap == nil) {
        [button setHidden:YES];
        [button setEnabled:NO];
    }
}

使用此功能,您的应用会在加载视图时检查googlemap属性,如果button为空,则会隐藏googlemap。否则,它会照常进行。

您可以继续从if中删除IBAction语句,因为只有在用户按下按钮时才会调用该方法。如果按钮隐藏了,那么该方法永远不会被调用。

答案 1 :(得分:1)

尝试

-(IBAction)btnMapM: (id)sender
{
  ...

以及@Sam Ritchie的回答。

答案 2 :(得分:0)

感谢所有帮助解决此问题的人 - 事实证明我的导航栏按钮是在viewDidLoad中单独声明的(btnMapm是一种动作方法,而不是实际的按钮,这花了我一段时间才意识到)所以我刚刚在viewDidLoad编辑了Sam的if语句,使其隐藏如下:

    if (googlemap != nil) {

        BlueButton *blueSaveButton = [[BlueButton alloc] init];
        [blueSaveButton setTitle:@"Map" forState:UIControlStateNormal];
        [blueSaveButton addTarget:self action:@selector(btnMapM) forControlEvents:UIControlEventTouchUpInside];
        UIBarButtonItem *button = [[UIBarButtonItem alloc]  initWithCustomView:blueSaveButton];
        self.navigationItem.rightBarButtonItem = button;
        [button release];
        [blueSaveButton release];
    }

并认为这让我花了大约三个小时。作为一个初学者很糟糕......但也许这会帮助别人!

由于

尼克