【发布时间】:2013-09-20 13:03:40
【问题描述】:
我有 3 个视图控制器。 view1、view2、view3 View1 和 view2 都有添加按钮,这两个按钮都称为同一个视图控制器 view3。你怎么知道哪个按钮叫view 3
请告诉我如何知道哪个按钮叫 view3
【问题讨论】:
标签: iphone
我有 3 个视图控制器。 view1、view2、view3 View1 和 view2 都有添加按钮,这两个按钮都称为同一个视图控制器 view3。你怎么知道哪个按钮叫view 3
请告诉我如何知道哪个按钮叫 view3
【问题讨论】:
标签: iphone
创建一个属性并在您的视图控制器 3 上合成它,例如:
@property (nonatomic, retain) NSString *ComingForm;
现在,当您创建 viewcontroller 3 的对象时,在您的 viewcontroller #1 和 #2 上的按钮触摸事件上,只需设置“ComingForm”值即可。喜欢
viewcontroller3 *__viewcontroller3=[[viewcontroller3 alloc] init];
[__viewcontroller3 setComingForm: @"View1"];
现在您可以轻松地从哪个视图控制器中获取。
【讨论】:
首先查看 .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];
}
}
【讨论】:
您可以将 view1 和 view2 中的添加按钮的 tag 属性设置为 1 和 2强>分别。
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 表示 view3 由 view1 内的 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.");
}
【讨论】: