Iphone 修改此代码以支持其他视图

Iphone 修改此代码以支持其他视图,iphone,objective-c,ios,ipad,uiview,Iphone,Objective C,Ios,Ipad,Uiview,我找到了这段代码(用appdelegate为应用程序编写)。我只想让它支持一个以上的视图(我创建了它) 守则: - (IBAction)swap { NSArray *subs = [window subviews]; [[subs objectAtIndex:0] removeFromSuperview]; if([subs objectAtIndex:0] == view2){ [window addSubview:view1]; } else

我找到了这段代码(用appdelegate为应用程序编写)。我只想让它支持一个以上的视图(我创建了它)

守则:

- (IBAction)swap
{
    NSArray *subs = [window subviews];
    [[subs objectAtIndex:0] removeFromSuperview];
    if([subs objectAtIndex:0] == view2){
        [window addSubview:view1];
    } else if([subs objectAtIndex:0] == view1){
        [window addSubview:view2];
    }
}

假设视图1、2和3是唯一的视图-

- (IBAction)swap
{
    [window sendSubviewToBack:[[window subviews] lastObject]];
}
或者,改变方向

- (IBAction)swap
{
    [window bringSubviewToFront:[[window subviews] objectAtIndex:0]];
}

假设视图1、2和3是唯一的视图-

- (IBAction)swap
{
    [window sendSubviewToBack:[[window subviews] lastObject]];
}
或者,改变方向

- (IBAction)swap
{
    [window bringSubviewToFront:[[window subviews] objectAtIndex:0]];
}

如果你不想用If-Else折磨自己,你可以使用一个视图数组并对它们进行迭代

NSArray *myViews = [NSArray arrayWithObjects:view1, view2, view3, nil];

NSInteger nextIndex = [myViews indexOfObject:[[window subviews] objectAtIndex:0]] + 1;

nextIndex = (nextIndex % [myViews count]); // to loop around if reached the end
[window addSubview:[myViews objectAtIndex:nextIndex]];

您可以对视图数组做一些聪明的事情,这样就不会在每次交换时都重新创建它

如果你不想用If-Else折磨自己,你可以使用一组视图并对它们进行迭代

NSArray *myViews = [NSArray arrayWithObjects:view1, view2, view3, nil];

NSInteger nextIndex = [myViews indexOfObject:[[window subviews] objectAtIndex:0]] + 1;

nextIndex = (nextIndex % [myViews count]); // to loop around if reached the end
[window addSubview:[myViews objectAtIndex:nextIndex]];

您可以对视图数组做一些聪明的事情,这样就不会在每次交换时都重新创建它

我使用addSubview:view3编写了second else if,但它不起作用:(但它应该做什么?目标是什么?现在它只需删除第一个视图并与新视图交换(将view1与view2交换,反之亦然)…你是说它不起作用还是你想做其他事情?万一呢?请更好地解释一下…在3个视图之间交换?@meronix我只想在3个视图之间交换,我得到了它谢谢大家我写了第二封信如果使用addSubview:view3但它不起作用:(但它应该做什么?目标是什么?现在它只需删除第一个视图并与新视图交换(将视图1与视图2交换,反之亦然)…你的意思是它不工作了还是你想做其他事情?万一呢?请解释清楚…在3个视图之间交换?@meronix我只想在3个视图之间交换,我得到了它谢谢你everybodygreat和thx另一个问题,当我使用它时,我应该做一些内存管理的事情还是工作正常??@Bobj-C你的内存管理在上面的方法中,t应该很好,因为您没有创建任何东西(只是使用引用)。由于您在其他地方创建了这些视图,请务必在dealloc中释放它们。很好,thx另一个问题是,当我使用它时,我应该为内存管理做些什么,还是它工作正常???@Bobj-C您的内存管理在上述方法中应该工作正常,因为您没有创建任何内容(只是使用引用)。既然您已经在其他地方创建了这些视图,请确保在您的dealloc中发布它们。如果我想为View2创建一个特殊类以放入方法中,谢谢您…我应该怎么做?如果我想为View2创建一个特殊类以放入方法中,谢谢您…我应该怎么做?