目标 - C:通过代表隐藏按钮

时间:2013-03-30 20:46:59

标签: ios uibutton int hidden

我有两个视图,一个是levelComplete视图,另一个是levelSelector视图。我想要做的是当levelComplete显示或在该视图上出现ViewDidLoad时,我想将一个委托发送到关卡选择器以在视图中显示一个按钮,然后创建该按钮UserInteractionEnabled那么我就可以编程那个按钮来做一些事情,如果没有隐藏的话。

1 个答案:

答案 0 :(得分:1)

您希望通过委托来完成。因为你可以用更简单的方式做到这一点。当您调用第二个视图时,只需告诉您的按钮隐藏即可。因此,调用第二个视图控制器的修改代码变为:

-(IBAction)passdata:(id)sender {
  secondview *second = [[secondview alloc] initWithNibName:nil bundle:nil];  
  self.secondviewData = second; 
  sender.hidden=YES;
  secondviewData.passedValue = textfield.text;
  [self presentModalViewController:second animated:YES];
}

然后,当您使用viewDidLoad再次加载视图时,可以将其设置为可见。如果您需要,我可以通过代表告诉您如何做到这一点。 Lemme知道什么效果最好。

编辑 - 代表解决方案

您的secondView的标头文件如下:

@protocol SecondViewHandlerDelegate <NSObject>

- (void)viewHasBeenLoaded:(BOOL)success;

@end

@interface secondview :UIViewController {
  IBOutlet UILabel *label;  
  NSString *passedValue;
}
@property (nonatomic, retain)NSString *passedValue;

-(IBAction)back:(id)sender;

@end

然后,在secondView(.m)的实现文件中,首先通过@synthesize delegate;合成委托。在此之后,在viewDidLoad secondView中添加以下行:

[[self delegate] viewHasBeenLoaded:YES];

这对你的第二个视图应该足够了。现在进入firstViewController,执行以下步骤:

在头文件(.h)中,导入第二个视图并实施协议:

@interface ViewController :UIViewController <SecondViewHandlerDelegate>{
..
..
}

在firstViewController的实现文件(.m)中,实现此方法:

- (void)viewHasBeenLoaded:(BOOL)success
{
    NSLog("Delegate Method Called");
    [myButton setHidden:YES];
}

最后,在您调用secondView时的代码中,添加以下行:     secondview * second = [[secondview alloc] initWithNibName:nil bundle:nil];     second.delegate = self;     ...

这应该可以解决你的目的。如果你能把答案标记为正确,我将不胜感激。谢谢:))