我之前问了一个类似的问题并且得到了许多答案,首先要感谢他们,但由于项目的复杂性,我不理解答案,所以我决定再次以非常简单的形式再次询问。 / p>
我在viewcontrollerA中有一个按钮,我希望该按钮在viewcontrollerB中的Label上写。如果简单,A处的按钮将在B上设置Label文本。
实施例
用户打开应用
点击第A页的按钮
第二页出现,页面标签文本由label.text代码设置来自viewcontroller它调用代码
或者也许我可以从B调用A的代码并不重要,只要我做它。我可以让butons打开另一个viewcontrolers所以你不需要解释它。
此外,如果有任何其他方式,只要它们很简单,我也可以这样做。也许我在别处编写代码并从A和B调用它。
请逐步解释,因为我对目标C和xcode知之甚少。
我问这个问题来了解viewcontrollers之间的联系。实际上我会让那个按钮在第二页显示一个随机数,但它不重要因为如果我学会简单连接我可以做其余的事。< / p>
答案 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];
将无法正常工作,因为在加载视图之前无法设置标签的文本。
希望有所帮助。