iOS如何使一个button运行另一个视图控制器的代码?
我不知道如何从不同的View Controller
运行代码。
我已经创build了一个新的项目,并希望作为一个快速的回应作业,并且必须在今晚完成。
在我的项目中,我有两个View Controller
的命名; viewcontroller1
和viewcontroller2
,并将它们分配给两个不同的自定义类。
Viewcontroller1
来到屏幕上它有两个UIButtons
,一个用于运行代码,另一个推到viewcontroller2
。
当用户单击第一个UIButton
我希望该button运行下面的代码,并在我的viewcontroller2
上的UILabel
上显示结果。
该代码使用arc4random
创build随机数,然后在UILabel
显示随机单词。 该代码适用于基于单页的应用程序,并在实施中使用。
所以基本上我想要的是,当我点击第一个UIButton
我想显示在我的UILabel
在viewcontroller2
随机创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
用户按下viewcontroller2
的label
运行代码的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"; }