【问题标题】:how to know which button called view controller in iPhone?如何知道 iPhone 中哪个按钮称为视图控制器?
【发布时间】:2013-09-20 13:03:40
【问题描述】:

我有 3 个视图控制器。 view1、view2、view3 View1 和 view2 都有添加按钮,这两个按钮都称为同一个视图控制器 view3。你怎么知道哪个按钮叫view 3

请告诉我如何知道哪个按钮叫 view3

【问题讨论】:

    标签: iphone


    【解决方案1】:

    创建一个属性并在您的视图控制器 3 上合成它,例如:

    @property (nonatomic, retain) NSString *ComingForm;
    

    现在,当您创建 viewcontroller 3 的对象时,在您的 viewcontroller #1 和 #2 上的按钮触摸事件上,只需设置“ComingForm”值即可。喜欢

    viewcontroller3 *__viewcontroller3=[[viewcontroller3 alloc] init];
    [__viewcontroller3 setComingForm: @"View1"];
    

    现在您可以轻松地从哪个视图控制器中获取。

    【讨论】:

      【解决方案2】:

      首先查看 .h 文件

      @property (nonatomic)int btncTag;
      

      首先查看 .m 文件

      -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
      {
          if ([segue.identifier isEqualToString:@"btnc"])
          {
              btncTag =1;
              ButtonfinalViewController *btnf = segue.destinationViewController;
              btnf.Tag = btncTag;
          }
      }
      

      在第二个视图.h 文件中

      @property (nonatomic)int btnpTag;
      

      在第二个视图 .m 文件中

      - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
      {
          if ([segue.identifier isEqualToString:@"pbtn"])
          {
              btnpTag = 2;
              ButtonfinalViewController *btnf = segue.destinationViewController;
              btnf.Tag = btnpTag;
      
          }
      }
      

      在第三视图.h

      @property (nonatomic)int Tag;
      

      在第三个视图.m

      - (IBAction)btnAdd:(id)sender
      {
          ButtonCViewController *btnc = [[ButtonCViewController alloc]init];
          btnc.btncTag = Tag;
          ButtonPViewController *btnp = [[ButtonPViewController alloc]init];
          btnp.btnpTag =Tag;
      
          if (Tag == 1)
          {
              UIStoryboard *menuViewStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
              ButtonCViewController *btnc = [menuViewStoryboard instantiateViewControllerWithIdentifier:@"BtnCView"];
              [self presentViewController:btnc animated:YES completion:nil];
          }
          if (Tag == 2)
          {
              UIStoryboard *menuViewStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
             ButtonPViewController *btnp = [menuViewStoryboard instantiateViewControllerWithIdentifier:@"BtnPView"];
              [self presentViewController:btnp animated:YES completion:nil];
          }
      }
      

      【讨论】:

        【解决方案3】:

        您可以将 view1view2 中的添加按钮的 tag 属性设置为 12强>分别。

        btnInView1.tag = 1;   //in view1.
        btnInView2.tag = 2;   //in view2.
        

        您需要做的是在 view3 中为一些 int 变量创建属性,例如 tagNo

        @property (nonatomic) int tagNo;     //in view3.
        

        在更改为 view3 之前,您必须将 tagNo 设置为 Add Button 的 tag 值。

        ViewController3 *view3 = [[ViewController3 alloc] initWithNibName:@"ViewController3" bundle:nil];
        view3.tagNo = btnInView1.tag    //in view1.
        //view3.tagNo = btnInView2.tag  //in view2.
        

        现在,在 view3 中,您只需检查 tagNo 的值。 如果是 1,则意味着 view3 是从 view1 加载的,否则是从 view2 加载的,或者你可以说它是否是 1 表示 view3view1 内的 Add Button 加载,否则由 view2 内的 Add Button 加载。

        if (self.tagNo == 1)
        {
            NSLog("view3 is loaded by Add Button inside view1.");
        }
        else if (self.tagNo == 2)
        {
            NSLog("view3 is loaded by Add Button inside view2.");
        }
        else
        {
            NSLog("It will never reach here.");
        }
        

        【讨论】:

        • 你能解释一下怎么做吗?
        • @nidhu:可以吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-21
        • 1970-01-01
        • 1970-01-01
        • 2021-10-08
        相关资源
        最近更新 更多