wns9778.com_威尼斯wns.9778官网

热门关键词: wns9778.com,威尼斯wns.9778官网
wns9778.com > 计算机教程 > 【wns9778.com】IOS superView和subView

原标题:【wns9778.com】IOS superView和subView

浏览次数:161 时间:2019-12-01

ios 页面跳转之间传递数据----通过delegate

 

主要用到了,两个类,一个delegate

a类,调用b类,当b类执行之后,需要把一个数据传递给a类,a类把这个数据显示出来。

1.delegate,就这一个头文件就足够了。在类中去实现这个代理方法

#import

@protocolUIViewPassValueDelegate

- (void)passValue:(NSString*)value;

一旦某个类,实现了这个回调函数,这个类就会获取当前的value数据。因此,接收数据的类一定实现一个回调函数。对于当前项目就是passValue

@end

2.第一个页面

.h文件

#import

#import UIViewPassValueDelegate.h

#import ValueInputView.h

@interfaceDelegateSampleViewController : UIViewController

{

UITextField*_value;

}

@property(strong, nonatomic) IBOutletUITextField*value;

- (IBAction)buttonClick:(id)sender;

@end

.m文件

#import DelegateSampleViewController.h

@implementationDelegateSampleViewController

@synthesizevalue = _value;

- (id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil

{

self= [superinitWithNibName:nibNameOrNil bundle:nibBundleOrNil];

if(self) {

}

returnself;

}

- (void)viewDidLoad

{

[superviewDidLoad];

}

- (void)viewDidUnload

{

[selfsetValue:nil];

[superviewDidUnload];

}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{

return(interfaceOrientation == UIInterfaceOrientationPortrait);

}

 

- (IBAction)buttonClick:(id)sender

{

ValueInputView* valueView = [[ValueInputViewalloc] init];

valueView.delegate= self;

[selfsetModalTransitionStyle:UIModalTransitionStyleCoverVertical];

[selfpresentModalViewController:valueView animated:YES];

}

-(void)passValue:(NSString*)value

{

self.value.text= value;

NSLog(@the get value is %@,value);

}

@end

3.第二个类:

.h文件

#import

#import UIViewPassValueDelegate.h

@interfaceValueInputView : UIViewController

{

NSObject* delegate;

UITextField* _value;

}

@property(retain, nonatomic) IBOutletUITextField*value;

@property(nonatomic,retain) NSObject* delegate;

- (IBAction)buttonClick:(id)sender;

@end

.m文件

#import ValueInputView.h

 

@implementationValueInputView

@synthesizevalue=_value;

@synthesizedelegate;

 

- (id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil

{

self= [superinitWithNibName:nibNameOrNil bundle:nibBundleOrNil];

if(self) {

// Custom initialization

}

returnself;

}

- (void)viewDidLoad

{

[superviewDidLoad];

}

- (void)viewDidUnload

{

[selfsetValue:nil];

[superviewDidUnload];

}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{

return(interfaceOrientation == UIInterfaceOrientationPortrait);

}

- (IBAction)buttonClick:(id)sender {

[delegatepassValue:self.value.text];

NSLog(@self.value.text is %@,self.value.text);

[selfdismissModalViewControllerAnimated:YES];

}

@end

http://www.bkjia.com/IOSjc/867338.htmlwww.bkjia.comtruehttp://www.bkjia.com/IOSjc/867338.htmlTechArticleios 页面跳转之间传递数据----通过delegate 主要用到了,两个类,一个delegate a类,调用b类,当b类执行之后,需要把一个数据传递给a类,a类把...

在Iphone的视图中,其实就是一个一个view,一层view上面放一层view,一个view上面放一群view,甚至UIWindow也是一个view,在网上找了一张图片很能说明这个问题:

wns9778.com 1

可见我们能够看到的都是一个view视图,而我们能对其进行操作,是因为UIController和UIView都是UIResponder的子类。这时我们对视图进行操作时需要掌握几个比较重要的概念和几个常用的方法.一个是superView和subView的概念,一个是UIView和UIControl类对象的区别。

当我们生成一个独立的view视图时,往往是新建一个UIViewController的文件并伴随一个xib文件,这个xib文件中的fie's owner肯定是这个UIViewController类了,而它的Objects一般就是一个UIView对象(一张干净的画布),我们往往可以将这个UIView改为UIControl,通过修改它的Custom Class项来实现,这时这一大张画布就可以像它上面那些button之流的控件一样来响应方法了,我们在隐藏软键盘时就用到了这一点。

而superView和subView的概念更好理解,view上可以放控件,那么这个view就是这些控件的superView.而UIWindow上可以叠一层又一层的view,UIWindow就是这些view的superView.先放上去的index为0,然后依次累加。

处理superView和subView往往用到几个方法:

removeFromSuperview;//调用者为subView

insertSubview:atIndex;//调用者为superView

了解了这些我们来看一个实例,很简单,实现在根视图控制器上添加两个view(都是整页覆盖屏幕的),然后点击屏幕分别切换显示。

新建一个项目,然后添加两个UIViewController类并附带xib文件,分别取名为FirstViewController,SecondViewController;在viewController中进行如下操作:

viewController.h:

[plain]view plaincopy

#import 

#import "FirstViewController.h"

#import "SecondViewController.h"

@interface ViewController : UIViewController

@property (retain ,nonatomic) FirstViewController *firstViewController;

@property (retain ,nonatomic) SecondViewController *secondViewController;

@end

viewController.m:

[plain]view plaincopy

#import "ViewController.h"

@implementation ViewController

@synthesize firstViewController;

@synthesize secondViewController;

- (void)viewDidLoad

{

[super viewDidLoad];

firstViewController = [[FirstViewController alloc]initWithNibName:@"FirstViewController" bundle:nil];

secondViewController = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil];

[self.view addSubview:firstViewController.view];

[self.view addSubview:secondViewController.view];

}

- (void)viewDidUnload

{

[super viewDidUnload];

// Release any retained subviews of the main view.

}

-wns9778.com, (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{

return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);

}

@end

以上代码实现了在viewDidLoad中声明两个对象,然后添加到主视图上,这样在打开模拟器时会看到secondView的视图(后添加的在上面,index为1);

然后在FirstViewController.xib文件中将View的Custom Class发为UIControl,背景改一下,贴个label内容为1;

本文由wns9778.com发布于计算机教程,转载请注明出处:【wns9778.com】IOS superView和subView

关键词: wns9778.com

上一篇:如何选择Win10补丁更新内容与方式,win10补丁更新

下一篇:没有了