道歉,如果这是一个全新的问题,我在网上看了看,找不到简单的答案。
如果我的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
谢谢,
尼克
答案 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];
}
并认为这让我花了大约三个小时。作为一个初学者很糟糕......但也许这会帮助别人!
由于
尼克