【问题标题】:How to navigate from one view controller to another view controller?如何从一个视图控制器导航到另一个视图控制器?
【发布时间】:2012-10-10 13:29:22
【问题描述】:

我有两个视图控制器,在第一个视图控制器中我有一个按钮,现在我想让用户点击该按钮,然后他们将转到第二个视图控制器。我没有使用情节提要并使用 ARC,我已经尝试过了,但它显示错误“uiviewcontroller 没有可见的@interface 声明选择器分配”。

- (IBAction)SendMsg:(id)sender {

    UIViewController *MessageViewController = [MessageViewController alloc] initWithNibName:@"MessageViewController" bundle:nil];
    [self presentModalViewController:MessageViewController animated:YES];
    [MessageViewController release];

}

【问题讨论】:

  • 在哪一行显示错误?

标签: iphone ios xcode


【解决方案1】:

您将“*MessageViewController”声明为 UIViewController 类型。然后调用“MessageViewController”alloc 方法。你不能那样做。 Maulik 是在正确的轨道上,但如果您使用 ARC,则需要删除最后一行([aMessageViewController release];)

尝试:

- (IBAction)SendMsg:(id)sender{
    MessageViewController *myMessageViewControllerInstance = [[MessageViewController alloc]  initWithNibName:@"MessageViewController" bundle:nil];
    [self presentModalViewController:myMessageViewControllerInstance animated:YES];
}

不要忘记,您需要一种关闭模式视图控制器的方法,并且您可以通过在上面最后一行之前添加类似这样的内容来设置演示和过渡样式:

myMessageViewControllerInstance.modalPresentationStyle = UIModalPresentationFormSheet;
myMessageViewControllerInstance.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

还有其他样式,我只是用了例子。祝你好运

【讨论】:

  • ...presentModalViewController:... 在 iOS 6 中已弃用。改用 [self presentViewController:obj animated:YES completion:nil];
【解决方案2】:
    - (IBAction)SendMsg:(id)sender {
        MessageViewController *aMessageViewController = [[MessageViewController alloc] initWithNibName:@"MessageViewController" bundle:nil];
        [self presentModalViewController:aMessageViewController animated:YES];
    }

【讨论】:

    【解决方案3】:
        - (IBAction)SendMsg:(id)sender {
    
    MessageViewController *aMessageViewController = [[MessageViewController alloc] initWithNibName:@"MessageViewController" bundle:nil];
    [self presentModalViewController:aMessageViewController animated:YES];
    [aMessageViewController release];
    
    }
    

    如果您使用导航控制器,则可以使用 self.navigationController.......也可以。

    【讨论】:

      【解决方案4】:
      - (IBAction)SendMsg:(id)sender {
      
          MessageViewController *aMessageViewController = [[MessageViewController alloc] initWithNibName:@"MessageViewController" bundle:nil];
          [self presentModalViewController:aMessageViewController animated:YES];
          //[aMessageViewController release]; As you are using ARC
      
      }
      

      【讨论】:

      • MessageViewController *aMessageViewController = [[MessageViewController alloc] initWithNibName:@"MessageViewController" bundle:nil];
      • @chetan,不一样,仔细检查,也看我之前的评论
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      • 2014-07-25
      • 2013-03-12
      • 1970-01-01
      • 2020-10-04
      • 2012-05-05
      相关资源
      最近更新 更多