iOS如何使一个button运行另一个视图控制器的代码?

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

我已经创build了一个新的项目,并希望作为一个快速的回应作业,并且必须在今晚完成。

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

Viewcontroller1来到屏幕上它有两个UIButtons ,一个用于运行代码,另一个推到viewcontroller2

当用户单击第一个UIButton我希望该button运行下面的代码,并在我的viewcontroller2上的UILabel上显示结果。

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

所以基本上我想要的是,当我点击第一个UIButton我想显示在我的UILabelviewcontroller2随机创build的单词。

 -(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是我的viewcontroller2上的UILabel

你能否在你的答案中详细说明。 我是初学者,可能不会马上掌握概念。

用户打开应用程序

显示Viewcontroller1

用户按下viewcontroller2label运行代码的button 1

用户按下button 2进入viewcontroller

Viewcontroller2出现,它的标签已经改变了button

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

对于那些以前回答我的人,对于那些会回答谢谢的人..

谢谢。

所以,首先我想说清楚,viewcontroller1不可能进入屏幕。 其实viewcontroller1的视图来到屏幕上。 你只能在屏幕上看到视图,它们属于/由视图控制器控制。

为了正确回答你的问题,我们需要知道,你用什么来改变意见? 你使用导航控制器,tabbarcontroller或其他东西?

通常,用于呈现texte的UI元素的标签在viewcontroller的viewDidLoad方法中被初始化。 所以在之前设置文本什么也不做。

如果您从viewcontroller1引用viewcontroller2,则可以创build一个属性来保存文本,并在按下button之后进行设置。 并且viewcontroller2可以在加载标签上的视图后显示文本。 所以你在viewcontroller1中的代码看起来像这样

 -(IBAction)button; { ViewController2 *viewController2 = [[ViewController2 alloc] init]; viewcontroller2.textToShow = ......; //show view of your viewcontroller2 // eg [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; } 

你可以使用协议

1)像这样在viewcontroller1.h中创build协议

 @protocol ViewController1Delegate <NSObject> - (void)dealWithButton1; @end 

2)添加delegate.in viewcontroller1.h

 @interface viewcontroller1 : XXXXX { id<ViewController1Delegate> delegate; } @property(nonatomic,assign) id<ViewController1Delegate> delegate; @end 

3)在viewcontroller1.m中添加合成

 @synthesize delegate; 

4)处理button发件人

 -(IBAction)button { [delegate dealWithButton1]; } 

5)处理viewcontroller2.h

 @interface viewcontroller2 : XXXXX<ViewController1Delegate> { viewcontroller1 *vc1 ; } 

6)在viewcontroller2.m中绑定委托

 vc1.delegate = self; 

7)在viewcontroller2.m中实现委托

 - (void)dealWithButton1 { 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"; }