zoukankan      html  css  js  c++  java
  • iOS程序-使用xib的owner

    1.添加绿色的view,MJViewController对象作为owner

        NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil];    

        UIView *greenView = array[0];

        [self.view addSubview:greenView];

    2.添加蓝色的view,Dog对象作为owner

        UIView *blueView = [[NSBundle mainBundle] loadNibNamed:@"HisView" owner:_d2 options:nil][0];

        blueView.center = CGPointMake(160, 200);

        [self.view addSubview:blueView];

    3.owner的机制为代理模式

    方法/步骤

      • 1
        MJViewController.h


        #import <UIKit/UIKit.h>

        @interface MJViewController : UIViewController

        - (IBAction)leftClick;
        - (IBAction)rightClick;

        @end
      • 2
        MJViewController.m


        #import "MJViewController.h"
        #import "Dog.h"

        @interface MJViewController ()
        {
            Dog *_d1;
            Dog *_d2;
        }
        @end

        @implementation MJViewController

        - (void)viewDidLoad
        {
            [super viewDidLoad];
            
            // 1.加载xib文件
            NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil];
            
            UIView *greenView = array[0];
            
            // 2.添加到控制器的view里面去
            [self.view addSubview:greenView];
            
            // 3.
        //    UIButton *left = (UIButton *)[greenView viewWithTag:10];
        //    [left addTarget:self action:@selector(leftClick) forControlEvents:UIControlEventTouchUpInside];
        //    
        //    UIButton *right = (UIButton *)[greenView viewWithTag:20];
        //    [right addTarget:self action:@selector(rightClick) forControlEvents:UIControlEventTouchUpInside];
            
            _d1 = [[Dog alloc] init];
            _d1.age = 10;
            
            _d2 = [[Dog alloc] init];
            _d2.age = 20;
            
            // 添加蓝色的view
            UIView *blueView = [[NSBundle mainBundle] loadNibNamed:@"HisView" owner:_d2 options:nil][0];
            blueView.center = CGPointMake(160, 200);
            [self.view addSubview:blueView];
        }

        - (void)leftClick
        {
            NSLog(@"left------");
        }

        - (void)rightClick
        {
            NSLog(@"right------");
        }
        @end
      • 3
        Dog.h


        #import <Foundation/Foundation.h>

        @interface Dog : NSObject

        @property (nonatomic, assign) int age;

        - (IBAction)btnClick;
        @end
      • 4
        Dog.m


        #import "Dog.h"

        @implementation Dog
        - (void)btnClick
        {
            NSLog(@"%d岁的狗在汪汪.....", _age);
        }

        /*
        - (NSArray *)loadNibNamed:(NSString *)name owner:(id)owner options:(NSDictionary *)options
        {

            // 解析HisView.xib文件 

            //   创建Objects下面的所有对象
            // 创建view
            UIView *blue = [[UIView alloc] init];
            blue.backgroundColor = [UIColor blueColor];
            //....设置其他属性

            // 创建按钮
            UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
            [btn setTitle:@"我是按钮" forState:UIControlStateNormal];
            [btn addTarget:owner action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];
        //    ....设置其他属性
            
            [blue addSubview:btn];
            
            // 创建文本输入框
            UITextField *field = [[UITextField alloc] init];
            // ... 设置其他属性
            
            return @[ blue, field];
        }
         
         */

        @end
      • 5
        MyView.xib
      • 6
        HisView.xib
  • 相关阅读:
    python 元组操作
    python安装(python2.7)
    0、
    1、Centos 7 系统的初化始配置
    C# 6.0新特性
    ios学习之路
    Can 't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock '(2) ;
    px,em,rem,vw单位在网页和移动端的应用
    html5shiv.js和respond.min.js
    display:inline-block间隙问题
  • 原文地址:https://www.cnblogs.com/ChouDanDan/p/5054960.html
Copyright © 2011-2022 走看看