我有10个 UIButton
对象。我为所有人定义了一个动作。当我在相关按钮上时,我想将UIScrollView
动画为所需的图像位置。我已经使用故事板实施了这个项目,并且有一种用于所有10个按钮的方法。我像这样的viewDidLoad
中的CC_3中的每个按钮给了标签
button1.tag = 10;
button1.tag = 11;
button1.tag = 12;
button1.tag = 13;
button1.tag = 14;
button1.tag = 15;
button1.tag = 16;
button1.tag = 17;
button1.tag = 18;
button1.tag = 19;
//viewcontroller.m文件
-(IBAction) Button1:(id) sender
{
[self performSegueWithIdentifier:@"nextView" sender:sender];
}
此按钮方法将带我去NextViewController及其工作正常,但是在nextviewctontroller.m
文件中,我想为UIScrollView
动画到所需的位置。我在nextviewcontroller.m
文件中这样做,但它不起作用。
viewDidload
{
if ([sender tag] == 10)
{
[yourScrollView scrollRectToVisible:CGRectMake(0,0,100,100) animated:YES];
}
else if ([sender tag] == 11)
{
[yourScrollView scrollRectToVisible:CGRectMake(320,0,100,100) animated:YES];
}
/*
.
.
.
.
.
.
.
and its continue to the last tag
*/
}
它不会使UIScrollView
动画到所需的位置,并且在这里记住一件事,我将sender
称为标题文件中的id
。当我单击相应的按钮时,请告诉我如何将UIScrollView
动画为所需的位置。我还想说我没有从Xcode项目中复制并粘贴此代码。我写了这个代码,只给您我想要什么。
此时,您在第二个ViewController中,不再可以访问按钮上的标签。除非您有提及第一个视图控制器(您不应该),否则它们不在那时。
。您应该在" NextViewController"上创建标签或偏移属性。然后,根据您从第一个视图控制器到达那里的方式,您需要将第一个视图控制器设置为第二个属性。然后,您可以在第二次访问它。如果您使用的是SEGUE,则应在第一个视图控制器的Preparforsegue方法中执行此操作。
如果要在导航控制器上推动它,则在分配第二个视图控制器并将其推入导航堆栈之前,将设置该属性。
在下一个视图控制器的标题中添加此
@property (nonatomic, strong) UIButton *buttonBeingPassedIn;
在第一个视图控制器中,您需要在全球创建UIBUTTON,以便您可以以该文件中的任何方法访问它,将其称为:ButtonThatWastapped。然后,您可以做这样的事情:
-(IBAction) Button1:(id) sender
{
buttonBeingPassedIn = (UIButton *)sender;
// Notice this has been changed to sender: self
[self performSegueWithIdentifier:@"nextView" sender:self];
}
在第一个视图控制器中,您需要添加此方法
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
nextViewController *vc = (nextViewController *)segue.destinationViewController;
vc.buttonBeingPassedIn = buttonThatWasTapped;
}
然后您将能够做
viewDidload
{
if (buttonBeingPassedIn == 10)
}
尝试在ViewWillAppear而不是ViewDidload中执行此操作。您不应将与几何相关的内容放在ViewDidload中,因为该点的几何(帧等)在此点未设置。