我不知道如何从不同的View Controller运行代码。

我创建了一个新项目,希望能尽快完成它,这是我的功课,必须在今晚之前完成。

在我的项目中,我有两个View Controller的名字。 viewcontroller1viewcontroller2,并将它们分配给两个不同的自定义类。

屏幕上显示Viewcontroller1,它有两个UIButtons,一个用于运行代码,另一个用于推送至viewcontroller2

当用户单击第一个UIButton时,我希望该按钮运行以下代码,并在UILabelviewcontroller2上显示结果。

该代码使用arc4random创建随机数,然后在UILabel中显示随机词。该代码适用于基于单页的应用程序,并在实现中使用。

所以基本上我想要的是,当我单击第一个UIButton时,我想在UILabel中的viewcontroller2上显示随机创建的单词。

-(IBAction)button; {
    int random_num;
    random_num = (arc4random() % 5 - 1) + 1;
    if (random_num == 1) {
    label.text = @"hello1";
    }
    else if (random_num == 2) {
    label.text = @"hello2";
    }
    else if (random_num == 3) {
    label.text = @"hello3";
    }
    else if (random_num == 4) {
    label.text = @"hello4";
    }
}


timelabel是我的UILabel上的viewcontroller2

能否在回答中详细说明。我是一个初学者,可能不会立即掌握这些概念。



用户打开应用

显示了Viewcontroller1

用户在button 1中按label运行viewcontroller2的代码

用户按button 2转到viewcontroller

Viewcontroller2出现并且按钮上的标签已更改

我知道这不是一件难事,但我做不到。

对于那些之前回答过我的人以及那些将会回答我的人,非常感谢。

谢谢。

最佳答案

因此,首先,我想说清楚一点,viewcontroller1不可能出现在屏幕上。实际上,viewcontroller1的视图出现在屏幕上。您只能在屏幕上看到视图,并且视图属于/由视图控制器控制。

为了正确回答您的问题,我们需要知道,您使用什么来更改视图?您是否使用导航控制器,tabbarcontroller或其他工具?

通常,作为表示文本的UI元素的标签是在viewcontroller的viewDidLoad方法中初始化的。因此,在此之前设置文本无效。

如果您从viewcontroller1中引用了viewcontroller2,则可以创建一个属性来保存文本并在按下按钮后进行设置。并且viewcontroller2可以在将视图加载到标签上之后显示文本。因此,您在viewcontroller1中的代码如下所示

-(IBAction)button; {
 ViewController2 *viewController2 = [[ViewController2 alloc] init];
 viewcontroller2.textToShow = ......;
 //show view of your viewcontroller2
 // e.g.
 [self.navigationController pushViewController:viewcontroller2 animated:YES];
 }


还有你的viewcontroller2头文件(ViewController2.h)

   @property (nonatomic, strong) NSString *testToShow;


您viewController2实现文件(Viewcontroller2.m)

@synthesize textToShow;
-(void)viewDidLoad
 {
     UILabel *label = UILabel aloc initWithFrame:CGRectMake(0, 0, 200, 200);
     [self.view addSubview:label];
     label.text = self.textToShow;
 }

10-08 17:53