2011-10-19 57 views
0

我有一个UIViewController,在顶部带有UIToolBar的3个按钮和一个UIView,当触摸这些按钮时,我必须更改控制器的视图。我能做些什么来获得我的porpuse?提前致谢。在UIViewController中更改视图

回答

2

你可能想使用类似一个UINavigationController控制视图栈,然后让你的按钮(一个或多个)调用这些方法为Touch Up Inside行动之一:

  • pushViewController:animated:
  • popViewControllerAnimated:
  • popToRootViewControllerAnimated:
  • popToViewController:animated:

这是一个很好的uinavigationcontroller-tutorial调查。

2

您需要为您设置的每个操作执行类似操作。

在当前的viewController的.h文件:

#import "OtherViewController.h" 

@interface MyViewController : UIViewController 
{ 
    OtherViewController *otherViewController; 
} 

@property(nonatomic, retain)IBOutlet OtherViewController *otherViewController; 

那么在当前的viewController的.m文件,你需要添加下面的每个IBAction为(内润色)。

在.m文件添加的顶部:

@synthesize otherViewController; 

然后再做一个IBAction为,把下面的代码行显示另一种观点认为:

[self presentModalViewController:otherViewController animated:NO]; 

在你otherViewController你可以

[self dismissModalViewControllerAnimated:NO]; 

注:通过使用自身解雇其他的事情,你需要要做的是在Interface Builder中为您打算显示的每个视图创建一个UIViewController。然后,您需要进入身份检查员并将该类设置为OtherViewController。正常情况下,您需要将IBOutlet链接到OtherViewController

有一个YouTube video tutorial它涵盖了我上面提到的所有内容。这是一个非常简单的入门方法。

+0

感谢您的帖子,我想我应该更具体一点。我不想使用任何其他uiviewcontroller。我只需要一个uiviewcontroller,里面有三个按钮的工具栏,工具栏下面有一个uiview,这个uiview将包含取决于哪个按钮被按下的视图。所以,uiview会在不同的时刻包含3个不同的uiviews。 – luisjd

+0

我所做的是创建3个不同的UIview,其中包含自己的控件。然后是具有属性工具栏和viewcontainer的uiviewcontroller。在ViewdidLoad()方法中,我创建了一个uiviewxxxx,然后将佣人viewcontroller = uiviewxxxx;然后创建第一个视图的实例并使viewcontroller = firstview;在uiviewcontroller中显示它。我可以做什么按钮touchupinside方法之间切换3视图?提前致谢。 – luisjd

2

UiViewController查看属性是您正在查看的基本视图。它可以被设置(替换为另一个)。所以用您创建的另一个视图替换ViewController的视图对象。

UIView * customView = [[[UIView alloc] initWIthFrame:viewFrame] autorelease]; 
[self setView:customView]; 

这里的自我代表当前的viewController