iphone switchview带按钮,如何只允许按一次按键?

时间:2010-06-29 11:34:39

标签: iphone objective-c uibutton

即时新手开发者并创建我的第一个iPhone应用程序......我有一个小问题:)

我在我的程序中切换2个视图,secondView超过firstView,当我按下按钮2次或更多时显示SecondView iphone模拟器停止蠕动,如果我按下以显示FirstView他仍然显示SecondView视图:( ...

我需要帮助如何按下按钮只按一次,如果切换回FirstView后可以再次按一次,并显示像presse,现在它显示只有当我这样做时,...我想要TabBar中的按钮,如果我使用TabBar对我来说更难我不知道如何调整它的高度并添加自定义背景,并更改按钮的效果

非常感谢你,抱歉我的英语不好!

这是我使用按钮切换视图的代码

 //   FirstView.h
 #import <UIKit/UIKit.h>

@interface FirstView : UIViewController {

}

-(IBAction) goToSecondView:(id) sender;
-(IBAction) goToFirstView:(id) sender;

@end

//    FirstView.m
#import "FirstView.h"

#import "SecondView.h"

@implementation FirstView

SecondView *secondView;

-(IBAction) goToSecondView:(id) sender{
   secondView = [[SecondView alloc] initWithNibName:@"SecondView" bundle:nil]; 
   [self.view addSubview:secondView.view];
}

 -(IBAction) goToFirstView:(id) sender {      
    [secondView.view removeFromSuperview];
}

非常感谢你!

1 个答案:

答案 0 :(得分:3)

此:

@implementation FirstView

SecondView *secondView;

...很可能是您崩溃的根源。您不应该在实现中定义实例变量。编译器可能允许它,但运行时将被混淆,并且实例变量将无法正确保留。

您应该将其定义为:

@interface FirstView : UIViewController {
    SecondView *secondView;
}
@property(nonatomic, retain) SecondView *secondView;

...并使用它:

-(IBAction) goToSecondView:(id) sender{
   UIView *newView = [[SecondView alloc] initWithNibName:@"SecondView" bundle:nil];
   self.secondView=newView;
   [newView release];
   [self.view addSubview:self.secondView.view];
}

为清楚起见,您还应将FirstViewSecondView重命名为FirstViewControllerSecondViewController,因为它们是视图控制器,而不是视图本身。

更一般地说,你要做的是危险和困难。您不通过添加和删除视图作为子视图来交换视图。您需要使用UINavigationController或UITabbarController交换视图控制器及其视图。在Xcode File&gt; New Project中,有一个基于导航的项目和一个基于Tabbar的项目模板。两者都将为您提供使用任一控制器实现简单应用程序所需的大部分代码。

花一天时间学习如何正确使用这些控制器是值得的。使用您当前的设计,如果获得的视图超过两个,您的应用就会中断。