IOS使按钮在viewcontrollers之间工作

时间:2012-07-23 21:40:08

标签: ios

我之前问了一个类似的问题并且得到了许多答案,首先要感谢他们,但由于项目的复杂性,我不理解答案,所以我决定再次以非常简单的形式再次询问。 / p>

我在viewcontrollerA中有一个按钮,我希望该按钮在viewcontrollerB中的Label上写。如果简单,A处的按钮将在B上设置Label文本。

实施例

用户打开应用

点击第A页的按钮

第二页出现,页面标签文本由label.text代码设置来自viewcontroller它调用代码

或者也许我可以从B调用A的代码并不重要,只要我做它。我可以让butons打开另一个viewcontrolers所以你不需要解释它。

此外,如果有任何其他方式,只要它们很简单,我也可以这样做。也许我在别处编写代码并从A和B调用它。

请逐步解释,因为我对目标C和xcode知之甚少。

我问这个问题来了解viewcontrollers之间的联系。实际上我会让那个按钮在第二页显示一个随机数,但它不重要因为如果我学会简单连接我可以做其余的事。< / p>

2 个答案:

答案 0 :(得分:0)

在您的操作中,您需要引用第二个视图控制器。例如

- (IBAction)buttonAClicked:(id)sender {
    ViewController2 *vc2 = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil];
    [self.navigationController pushViewController:vc2 animated:YES];
    vc2.someVariable = @"This is random text";
    [vc2.someButton setTitle:@"Some button text" forControlState:UIControlStateNormal];
}

这显示了如何创建第二个视图控制器,更改两个属性,然后推送它。

答案 1 :(得分:0)

在第二个视图控制器中创建一个名为theText的属性NSString,然后在viewDidLoad中将label.text分配给NSString; < / p>

- (void)viewDidLoad
{
    if(self.theText)
        self.label.text = self.theText;
}

现在使用第一个视图控制器在第二个视图控制器中设置theText

如果您使用segue使用prepareForSegue

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([[segue identifier] isEqualToString:@"Second View Segue"])
    {
        SecondViewController *theController = segue.destinationViewController;
        theController.theText = @"Some text";
    }
}

如果您正在使用某种模态演示文稿:

SecondViewController *theController = [[SecondViewController alloc] init];
theController.theText = @"Some text";
[self presentModalViewController:theController animated:YES];

或者如果您使用的是导航控制器:

SecondViewController *theController = [[SecondViewController alloc] init];
theController.theText = @"Some text";
[self.navigationController pushViewController:theController animated:YES];

因此,您的第一个视图控制器将在第二个中设置NSString属性,然后第二个将在加载期间将UILabel设置为NSString。在加载第二个视图控制器之前,您无法设置UILabel的文本,例如:

SecondViewController *theController = [[SecondViewController alloc] init];
theController.label.text = @"Some text";
[self.navigationController pushViewController:theController animated:YES];

将无法正常工作,因为在加载视图之前无法设置标签的文本。

希望有所帮助。