在不同的视图控制器中执行动作

Posted

技术标签:

【中文标题】在不同的视图控制器中执行动作【英文标题】:executing an action in a different view controller 【发布时间】:2014-02-11 02:55:12 【问题描述】:

在我的应用程序中,我正在尝试创建一个带有按钮的按钮。我现在的代码如下:

- (IBAction)doneTextField:(id)sender 

    YourShortcutsViewController *YSVC2 = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController2"];
    YSVC2.stringFromTextField = self.textField.text;
    [self presentViewController:YSVC2 animated:YES completion:nil];

    
        UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];

        btn.frame = CGRectMake(0, 0, 100, 50);
        [btn addTarget:self action:@selector(newButtonClicked) forControlEvents:UIControlEventTouchUpInside];
            [btn setTitle:@"FaceTime" forState:UIControlStateNormal];
        [self.view addSubview:btn];

    

这可行,但我需要添加的按钮添加到不同的视图控制器,而不是代码所在的视图控制器。 我该怎么做? 谢谢

【问题讨论】:

【参考方案1】:

您需要创建一个函数来在新的视图控制器中添加按钮:

在 YourShortcutsViewController.h 中:

-(void)addFaceTimeButton:(UIButton*);

在 YourShortcutsViewController.m 中:

-(void)addFaceTimeButton:(UIButton*)
    [self.view addSubview:btn];

然后将代码更改为:

- (IBAction)doneTextField:(id)sender 

    YourShortcutsViewController *YSVC2 = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController2"];
    YSVC2.stringFromTextField = self.textField.text;
    [self presentViewController:YSVC2 animated:YES completion:nil];

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    btn.frame = CGRectMake(0, 0, 100, 50);
    [btn addTarget:self action:@selector(newButtonClicked) forControlEvents:UIControlEventTouchUpInside];
    [btn setTitle:@"FaceTime" forState:UIControlStateNormal];

    [YSVC2 addFaceTimeButton:btn];


【讨论】:

以上是关于在不同的视图控制器中执行动作的主要内容,如果未能解决你的问题,请参考以下文章

在一个动作中渲染不同的视图

MVC如何从视图调用控制器中的动作以返回值

使用 Html.ActionLink 在不同的控制器上调用动作

放松转场动作的第二场转场

显示来自不同控制器的视图[重复]

如何在不同的视图控制器中创建插座?