我自己尝试了一些东西,但是无法真正掌握它。 我想做两件事: 首先,用户可以按下三个按钮中的一个 - 它们都链接到同一个ViewController,但是当用户按下第一个按钮时,在第二个ViewController中三个标签会相应地改变。然后,用户可以输入将在第三视图中显示的一些数据,也相应地输入在第一视图中按下哪个按钮的数据。 我用IF语句尝试了它,例如(如果ViewController.button1waspressed == True)它并没有真正起作用。我也用标签试过它,例如(Button1.tag = 1)
有人能给我一个简短的例子说明这是如何运作的吗?
FirstViewController.m
- (IBAction)switch:(id)sender;
{
SecondViewController *second =[[SecondViewController alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController:second animated:YES];
SecondViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
if (sender == self.button1) {
NSString *greeting = [[NSString alloc] initWithFormat:@"Randomtext"];
self.label.text = greeting;
}
}
这个问题很明显,SecondViewController无法从第一个看到属性。 (是的,我导入了FirstViewController,反之亦然)
答案 0 :(得分:3)
你的按钮都应该直接调用IBAction
s(方法定义如下):
- (IBAction)doSomething:(id)sender;
将它们定义为IBAction
会使它们与接口构建器中的蓝色连接线相连。一旦你连接它们并调用方法,你可以简单地使用sender
参数的相等性检查,调用按钮将自动设置为该参数。
if (sender == self.myButton) {
// do something
}
这里我假设你的ViewController中有一个名为myButton
的属性,它是一个IBOutlet
:
@property (nonatomic, retain) IBoutlet UIButton *myButton;
这会在接口构建器中公开要与蓝色连接线连接的属性,因此当您说myButton
时,ViewController会确切地知道您正在谈论的按钮。