【问题标题】:When tapping a UIButton that was created programmatically is it possible to push to a controller that is editable in interface builder?当点击以编程方式创建的 UIButton 时,是否可以推送到可在界面生成器中编辑的控制器?
【发布时间】:2014-04-15 11:55:40
【问题描述】:

以编程方式创建了一个 UIButton,但它需要链接到的页面需要是 UINavigationController 的根控制器视图。

这个页面在界面生成器中创建比在代码中更容易。当点击有问题的按钮时,它需要转到另一个我可以在界面生成器中编辑的控制器/视图。

可能还是不可能?

如果可能的话,我该怎么做?我觉得我会经常遇到这个问题。

【问题讨论】:

    标签: ios objective-c cocoa-touch uinavigationcontroller


    【解决方案1】:

    你可以这样做:

    按钮创建:

     UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 25, 25)];
     [btn addTarget:self action:@selector(btnMethod:) forControlEvents:UIControlEventTouchUpInside];
    

    按钮方法:

     - (void)btnMethod:(UIButton *)sender
     {
          [self performSegueWithIdentifier:@"MySegueIdentifier" sender:sender]; 
     }
    

    【讨论】:

      【解决方案2】:

      当然可以:

      创建按钮:

          UIButton *bottonOne = [[UIButton alloc]initWithFrame:CGRectMake(10, 15, 65, 12)];
      

      根据需要设置标题/图像。完成后,请执行以下操作:

          [buttonOne addTarget:self action:@selector(buttonOnepressed) forControlEvents:UIControlEventTouchUpInside];
      

      然后在同一个类中创建一个名为buttonOnepressed的方法

          -(void)buttonOnePressed
      {
          //preform the steps needed for your segue method and anything else you want to do when the        button has been tapped
      }
      

      编辑

      阅读完您的 cmets 后 - 您想要一个在代码中创建的按钮来执行转场,而无需手动调用转场(编写代码以实际显示新屏幕),并且您希望它的行为与您的行为相同IB中的拖放。如果是这样的话 - 简短的回答很简单,不。如果您在代码中创建一个按钮,那么它的所有操作也需要在代码中完成。

      编辑 2

      试试这个:

      在 IB 中创建一个像这样的“通用”segue:

      在点击按钮时按住 Ctrl 键从源视图控制器拖动到您想要执行的另一个视图。您可以使用场景底部的视图控制器对象来执行此操作。

      给 segue 一个标识符。

      然后使用 [self performSegueWithIdentifier@"Your Identifier"];在您的按钮点击方法中执行转场

      【讨论】:

      • 我已经这样做了,但我想知道如何使用在界面生成器中创建的控制器。我想编辑按钮推送到的控制器的视图,但在界面生成器中而不是在代码中。
      • 所以当您点击按钮时 - 您希望在 IB 中创建的 viewController 显示在屏幕上吗?您不想手动调用 segue 将视图控制器推送到屏幕上,对吗?
      • 那么,您希望能够从视图本身向视图控制器添加标签、按钮等吗?
      • 基本上,如果我在 IB 中完成这一切,我会从 UIButton 拖到 navigationController。在这种情况下,我不能,因为 UIButton 是在代码中创建的。我想实现同样的目标,但因为 UIButton 在代码中,我不能只是拖动和连接。如果我在 IB 中创建一个 navigationController 并为其创建另一个控制器根控制器,它们都会坐在那里连接到任何东西,我会收到一条黄色警告消息。
      • 那么它没有办法推送到在 IB 中创建的控制器吗?主要原因是我要设计的页面在视觉上比在代码中更容易设计。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-11
      • 1970-01-01
      相关资源
      最近更新 更多