自定义多视图

摘要

本章主要使用presentViewController和dismissViewControllerAnimated实现自定义多视图的切换,例子里面模拟导航视图控制器模式,不过跳转的时候有点区别。

运行结果

过程概要

1.新建工程后新增一个基于UIViewController的类,用作多视图的第二视图;

2.在主视图里面创建一个UINavigationBar,一个导航栏,控制页面跳转

3.为了增加可视效果,添加了背景图片以及部分文字

主要代码

h文件

//
//  ViewController.h
//  MyNav
//
//  Created by arbboter on 14/12/9.
//  Copyright (c) 2014年 arbboter. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "SecondView.h"

@interface ViewController : UIViewController
{
    UINavigationBar* _navigationBar;
    UINavigationItem* _navigationItemTitle;
    UIBarButtonItem* _barButtonLeft;
    UIBarButtonItem* _barButtonRight;
    SecondView* _nextView;
}

@property (nonatomic, retain) UINavigationBar* _navigationBar;
@property (nonatomic, retain) UINavigationItem* _navigationItemTitle;
@property (nonatomic, retain) UIBarButtonItem* _barButtonLeft;
@property (nonatomic, retain) UIBarButtonItem* _barButtonRight;
@property (nonatomic, retain) SecondView* _nextView;
@end

m文件

//
//  ViewController.m
//  MyNav
//
//  Created by arbboter on 14/12/9.
//  Copyright (c) 2014年 arbboter. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize _navigationBar;
@synthesize _barButtonLeft;
@synthesize _barButtonRight;
@synthesize _navigationItemTitle;
@synthesize _nextView;

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    // 设置图片
    self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"tree_sky.jpg"]];

    CGFloat x = self.view.frame.origin.x;
    CGFloat y = self.view.frame.origin.y + 20;
    CGFloat w = self.view.frame.size.width;
    CGFloat h = 40;
    NSLog(@"%.2f %.2f", self.view.frame.size.width, self.view.frame.size.height);

    // 设置导航栏
    self._navigationBar = [[UINavigationBar alloc]initWithFrame:CGRectMake(x, y, w, h)];
    self._navigationBar.translucent = NO;
    self._navigationBar.backgroundColor = [UIColor clearColor];
    [self.view addSubview:_navigationBar];

    // 导航栏条【左Item,Title,右Item】,分为三部分
    self._navigationItemTitle = [[UINavigationItem alloc] initWithTitle:@"平凡之路"];
    [self._navigationBar pushNavigationItem:self._navigationItemTitle animated:YES];

    self._barButtonRight = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"next.png"] style:UIBarButtonItemStylePlain target:self action:@selector(onNext:)];
    [self._navigationItemTitle setRightBarButtonItem:self._barButtonRight animated:YES];

    self._nextView = [[SecondView alloc] init];

    // 一些界面显示的信息
    UITextView* textInfo = [[UITextView alloc] initWithFrame:CGRectMake(x, y+h, w, self.view.frame.size.height-h)];
    textInfo.backgroundColor = [UIColor clearColor];
    textInfo.editable = NO;
    textInfo.textColor = [UIColor redColor];
    NSArray* fontList = [UIFont familyNames];
    textInfo.font = [UIFont fontWithName:[fontList objectAtIndex:arc4random()%fontList.count] size:18];
    textInfo.text = @"            平凡之路 - 朴树\n\n"
    "徘徊着的 在路上的\n"
    "你要走吗\n"
    "易碎的 骄傲着\n"
    "那也曾是我的模样\n"
    "\n"
    "沸腾着的 不安着的\n"
    "你要去哪\n"
    "谜一样的 沉默着的\n"
    "故事你真的在听吗\n"
    "\n"
    "我曾经跨过山和大海 也穿过人山人海\n"
    "我曾经拥有着一切 转眼都飘散如烟\n"
    "我曾经失落失望失掉所有方向\n"
    "直到看见平凡才是唯一的答案\n"
    "\n"
    "当你仍然 还在幻想\n"
    "你的明天\n"
    "她会好吗 还是更烂\n"
    "对我而言是另一天\n"
    "\n"
    "我曾经毁了我的一切 只想永远地离开\n"
    "我曾经堕入无边黑暗 想挣扎无法自拔\n"
    "我曾经象你象他象那野草野花\n"
    "绝望着 渴望着 哭着笑着平凡着\n";

    [self.view addSubview:textInfo];
    [textInfo release];
}

-(IBAction)onNext:(id)sender
{
    // 跳转到下一个视图
    [self presentViewController:_nextView animated:YES completion:nil];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)dealloc
{
    [_navigationBar release];
    [_navigationItemTitle release];
    [_barButtonLeft release];
    [_barButtonRight release];
    [_nextView release];
    [super dealloc];
}

@end

工程代码

时间: 2024-08-24 11:10:20

自定义多视图的相关文章

自定义适配器视图getview实现方法比较

Android开发之中,listview是一个非常重要的组件,它以列表的形式显示用户的数据,用户可以自由的定义LsitView每一列的内容,样式,很多时候使用ListView都需要使用自定义Adapter,自定义Adapter之中最重要的莫过于getView方法了. getView方法实现主要的三种方法: 1.第一种就是每次都给adapter new一个View载入布局. 例如: public View getView(int position, View convertView, ViewGr

Android 自定义View视图

创建全新的视图将满足我们独特的UI需求. 本文介绍在指南针开发中会用到的罗盘的界面UI,通过继承View类实现的自定义视图,以此来深刻了解自定义视图. 实现效果图: 源代码: 布局文件activity_main(其中CompassView继承View类): <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.

自定义View视图

自定义View视图文件查找逻辑 之前MVC5和之前的版本中,我们要想对View文件的路径进行控制的话,则必须要对IViewEngine接口的FindPartialView或FindView方法进行重写,所有的视图引擎都继承于该IViewEngine接口,比如默认的RazorViewEngine.但新版本MVC6中,对视图文件的路径方式却不太一样了,目前有两种方式,一种是通过RazorViewEngine,另外一种是通过新特性IViewLocationExpander接口. 通过RazorView

低版本系统兼容的ActionBar(三)自定义Item视图+进度条的实现+下拉导航+透明ActionBar

       一.自定义MenuItem的视图 custom_view.xml (就是一个单选按钮) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android

Android开发之自定义HorizontalScrollView视图实现仿ViewPager效果

开发过程中,需要达到 HorizontalScrollView和ViewPager的效果,于是直接重写了HorizontalScrollView来达到实现ViewPager的效果. 实际效果图如下: (1)自定义HorizontalScrollView类:AppHorizontalScrollView实现: package com.czm.ui.view; import java.util.ArrayList; import android.content.Context; import and

MVC自定义编辑视图,DateTime类型属性显示jQuery ui的datapicker

实现的效果为:在编辑视图中,对DateTime类型的属性,显示jQuery UI的datepicker.效果如下: Student.cs public class Student    {        public int Id { get; set; }        public string Name { get; set; }        public DateTime? JoinTime { get; set; }    } HomeController: public class

UICollectionView(集合视图)以及自定义集合视图

一.UICollectionView集合视图 其继承自UIScrollView. UICollectionView类是iOS6新引进的API,用于展示集合视图,布局更加灵活,可实现多列布局,用法类似于UITableView类. 1.需要遵循的协议: 1)UICollectionViewDataSource, 2)UICollectionViewDelegate, 3)UICollectionViewDelegateFlowLayout 2.创建collection: UICollectionVi

解读ASP.NET 5 &amp; MVC6系列(16):自定义View视图文件查找逻辑

原文:解读ASP.NET 5 & MVC6系列(16):自定义View视图文件查找逻辑 之前MVC5和之前的版本中,我们要想对View文件的路径进行控制的话,则必须要对IViewEngine接口的FindPartialView或FindView方法进行重写,所有的视图引擎都继承于该IViewEngine接口,比如默认的RazorViewEngine.但新版本MVC6中,对视图文件的路径方式却不太一样了,目前有两种方式,一种是通过RazorViewEngine,另外一种是通过新特性IViewLoc

iOS开发- 自定义遮罩视图(引导, 功能说明)源码+解析

iOS开发- 自定义遮罩视图(引导, 功能说明)源码+解析 我们平时使用App的时候, 经常在第一次使用的时候, 会有类似"新手教程"之类的东西, 来引导我们应该如何使用这个App. 但是这个"新手教程"不同于常规的引导页(引导页指第一次打开App时候, 弹出的那种介绍视图. 他是静态的, 不需要与用户交互, 可以直接一页页翻, 或者直接跳过.)所谓的"新手教程", 就是按照App的提示, 一步步跟着完成. 那这个"新手教程"