Ios 从一个ViewController移动到另一个ViewController

Ios 从一个ViewController移动到另一个ViewController,ios,objective-c,uiviewcontroller,segue,Ios,Objective C,Uiviewcontroller,Segue,我的视图控制器中有一个按钮,单击该按钮后,我需要将用户发送到下一个视图控制器,但它不起作用。我已将ctrl从我的按钮拖动到我想要的控制器,并将连接作为选中touchUpInside的UIButton。我也给segue起了名字,但还是什么都没有。按钮本身甚至无法识别触摸,也无法将我送到任何地方。以下是我的主视图控制器中的一些代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after

我的视图控制器中有一个按钮,单击该按钮后,我需要将用户发送到下一个视图控制器,但它不起作用。我已将ctrl从我的按钮拖动到我想要的控制器,并将连接作为选中touchUpInside的UIButton。我也给segue起了名字,但还是什么都没有。按钮本身甚至无法识别触摸,也无法将我送到任何地方。以下是我的主视图控制器中的一些代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    JDTHMainMenu *theMenu = [[JDTHMainMenu alloc] initWithFrame:self.view.bounds];
    [self.view addSubview:theMenu];

}

- (IBAction)matchViewControllerButton:(UIButton *)sender
{
    UIButton *matchScreenButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [matchScreenButton addTarget:self action:@selector(goToMatchView:sender:) forControlEvents:UIControlEventTouchDown];
    [matchScreenButton setUserInteractionEnabled:YES];
    NSLog(@"Open Match View");


}
- (void)goToMatchView:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"pushToMatchView"]) {
        JDTHMatchScreen *vc2 = (JDTHMatchScreen *)segue.destinationViewController;
        vc2.name = self.textField.text;
    }
}

我已经将这个视图控制器嵌入到一个navcontroller中,它是根控制器。我在某个地方读到,也许我需要在appdelegate中添加一些内容,但什么都不清楚。我将发布更多被视为重要的代码,我仍然处于学习的早期阶段,因此我不确定哪些内容是相关的。

您没有推送/呈现视图控制器,您只是为v2.name指定了一个值

必须启动segue,才能从按钮中按下/显示第二个视图控制器:

- (void)goToMatchViewController
{
    [self performSegueWithIdentifier:@"YOUR_SEGUE_IDENTIFIER" sender:self];
}
此代码可在
prepareforsgue:
中用于将var值分配给第二个VC。查看文档以查看更多信息

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"pushToMatchView"]) {
        JDTHMatchScreen *vc2 = (JDTHMatchScreen *)segue.destinationViewController;
        vc2.name = self.textField.text;
    }
}

您没有推送/显示视图控制器,您只是为v2.name指定了一个值

必须启动segue,才能从按钮中按下/显示第二个视图控制器:

- (void)goToMatchViewController
{
    [self performSegueWithIdentifier:@"YOUR_SEGUE_IDENTIFIER" sender:self];
}
此代码可在
prepareforsgue:
中用于将var值分配给第二个VC。查看文档以查看更多信息

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"pushToMatchView"]) {
        JDTHMatchScreen *vc2 = (JDTHMatchScreen *)segue.destinationViewController;
        vc2.name = self.textField.text;
    }
}

我认为您的看法是对的,但由于某些原因,我的按钮根本没有响应,我尝试添加要检查的NSLogs,重新连接按钮,创建另一个按钮,将其放在子视图的前面(由于imageview,并在所述imageview上打开用户交互),并简化它,使其只需单击并发送NSLog即可。但是什么都不起作用,有什么提示来找出为什么它甚至不能识别触摸吗?检查你的segue-identification字符串,确保它是正确的。对不起,我没有看到
setUserInteractionEnabled
btw在哪里添加了你的按钮?在故事板上,它添加在JDTHViewController(第一个控制器)的UIView(称为主菜单)下面我不能把它放在其他任何地方而不让它消失。最初我在UIView主菜单中有所有这些信息,但我无法将其显示在故事板中。因此,为了澄清:我的主ViewController有一个UIview,我试图通过故事板添加此按钮,代码在主ViewController.m文件中。我认为你是对的,但由于某些原因,我的按钮根本没有响应,我尝试添加NSLogs以检查,重新连接按钮,创建另一个,将其放在子视图的前面(由于imageview,并在所述imageview上打开用户交互),并简化它,以便单击并发送NSLog。但是什么都不起作用,有什么提示来找出为什么它甚至不能识别触摸吗?检查你的segue-identification字符串,确保它是正确的。对不起,我没有看到
setUserInteractionEnabled
btw在哪里添加了你的按钮?在故事板上,它添加在JDTHViewController(第一个控制器)的UIView(称为主菜单)下面我不能把它放在其他任何地方而不让它消失。最初我在UIView主菜单中有所有这些信息,但我无法将其显示在故事板中。所以为了澄清:我的主ViewController有一个UIview,我试图通过故事板添加这个按钮,代码在主ViewController.m文件中。