1. 程式人生 > >iOS新增子檢視控制器

iOS新增子檢視控制器

先編譯幾個子檢視控制器

//*子檢視控制器*/

@property (nonatomic, strong) tableVC *firstVC;

@property (nonatomic, strong) ViewController1 *secondVC;

@property (nonatomic, strong) ViewController2 *thirdVC;

@property (nonatomic, strong) ViewController4 *fourVC;

//*當前檢視控制器*/

@property (nonatomic, strong) UIViewController

*currentVC;

@property (nonatomic, strong) UIScrollView *headScrollView;

@property (nonatomic, strong) NSMutableArray *itemArray;

@property (nonatomic, strong) UIView *contentVie

第一步:頭部列表檢視的建立

_itemArray = [NSMutableArrayarrayWithObjects:@"頭條",@"今日",@"焦點",@"呵呵" ,nil];


_headScrollView = [[

UIScrollViewalloc]initWithFrame:CGRectMake(0, 20, [UIScreenmainScreen].bounds.size.width, 44)];

_headScrollView.backgroundColor = [UIColorcolorWithWhite:0.902alpha:1.000];

for (int i = 0; i<_itemArray.count; i++) {

UIButton *itemButton = [[UIButtonalloc]initWithFrame:CGRectMake(i*([UIScreenmainScreen

].bounds.size.width/_itemArray.count), 0, [UIScreenmainScreen].bounds.size.width/_itemArray.count, 44)];

        itemButton.tag = 100+i;

        itemButton.backgroundColor = [UIColorclearColor];

NSDictionary *dic = @{NSForegroundColorAttributeName:[UIColorpurpleColor],NSFontAttributeName:[UIFontsystemFontOfSize:14.0f]};

        [itemButton setAttributedTitle:[[NSAttributedStringalloc]initWithString:_itemArray[i] attributes:dic] forState:UIControlStateNormal];

        [itemButton addTarget:selfaction:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];

        [_headScrollViewaddSubview:itemButton];

    }

    [_headScrollViewsetContentSize:CGSizeMake([UIScreenmainScreen].bounds.size.width, 44)];

_headScrollView.showsHorizontalScrollIndicator = NO;

_headScrollView.showsVerticalScrollIndicator = NO;

    [self.viewaddSubview:_headScrollView];

   第二步:設定檢視展示子檢視VC的frame 

_contentView = [[UIViewalloc]initWithFrame:CGRectMake(0, 64, [UIScreenmainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height  - 64)];

_contentView.backgroundColor = [UIColorclearColor];

    [self.viewaddSubview:_contentView];

第三步:新增子檢視控制器

{

_firstVC = [[tableVCalloc]init];

    [selfaddChildViewController:_firstVC];

_secondVC = [[ViewController1alloc]init];

    [selfaddChildViewController:_secondVC];

_thirdVC = [[ViewController2alloc]init];

    [selfaddChildViewController:_thirdVC];

_fourVC = [[ViewController4alloc]initWithNibName:@"ViewController4"bundle:nil];

    [selfaddChildViewController:_fourVC];

//預設展示的是第一個子檢視控制器*/

 

//調整子檢視控制器的Frame已適應容器View

    [selffitFrameForChildViewController:_firstVC];

//設定預設顯示在容器View的內容

    [self.contentViewaddSubview:_firstVC.view];

_currentVC = _firstVC;

}

//點選事件

- (void)buttonClick:(UIButton *)sender{

if ((sender.tag == 100 && _currentVC == _firstVC) || (sender.tag == 101 && _currentVC == _secondVC) || (sender.tag == 102 && _currentVC == _thirdVC) || (sender.tag == 103 && _currentVC == _fourVC)) {

return;

    }

switch (sender.tag) {

case100:{

            [selffitFrameForChildViewController:_firstVC];

            [selftransitionFromOldViewController:_currentVCtoNewViewController:_firstVC];

        }

break;

case101:{

            [selffitFrameForChildViewController:_secondVC];

            [selftransitionFromOldViewController:_currentVCtoNewViewController:_secondVC];

        }

break;

case102:{

            [selffitFrameForChildViewController:_thirdVC];

            [selftransitionFromOldViewController:_currentVCtoNewViewController:_thirdVC];

        }

case103:{

            [selffitFrameForChildViewController:_fourVC];

            [selftransitionFromOldViewController:_currentVCtoNewViewController:_fourVC];

        }

break;

    }

}

- (void)fitFrameForChildViewController:(UIViewController *)chileViewController{

CGRect frame = self.contentView.frame;

    frame.origin.y = 0;

    chileViewController.view.frame = frame;

}

//轉換子檢視控制器

- (void)transitionFromOldViewController:(UIViewController *)oldViewController toNewViewController:(UIViewController *)newViewController{

    [selftransitionFromViewController:oldViewController toViewController:newViewController duration:0.3options:UIViewAnimationOptionTransitionCrossDissolveanimations:nilcompletion:^(BOOL finished) {

if (finished) {

            [newViewController didMoveToParentViewController:self];

_currentVC = newViewController;

        }else{

_currentVC = oldViewController;

        }

    }];

}

//移除所有子檢視控制器

- (void)removeAllChildViewControllers{

for (UIViewController *vc inself.childViewControllers) {

        [vc willMoveToParentViewController:nil];

        [vc removeFromParentViewController];

    }

}



相關推薦

iOS新增檢視控制器

先編譯幾個子檢視控制器 //*子檢視控制器*/ @property (nonatomic, strong) tableVC *firstVC; @property (nonatomic, strong) ViewController1 *secondVC; @p

Android、iOS新增檢視方法比較

最近在做android專案。之前看過一些android方面書籍,但是忘的差不多了。後來從事一段時間iOS開發。現在又被安排開發Android應用程式了。 要求自定義一個view,實現游標閃爍效果,我想應該把游標單獨也當成一個view子類物件才對。因此就動手對已有程式碼進行重構

新增檢視控制器時,檢視控制器的viewWillAppear方法不呼叫

直接貼程式碼: [baseController beginAppearanceTransition:trueanimated:false]; [self.viewaddSubview:baseController.view]; [baseController e

iOS開發移除檢視控制器

OC語法中沒有直接移除子檢視的方法,但是可以通過查詢子檢視來移除 for(UIView *view in [self.view subviews]) { [view removefromsuperview] } 來點直接的:實際上是用了NSArray的mak

新增和移除檢視控制器(child ViewController)

// add child viewController UIViewController* controller = [self.storyboard instantiateViewContro

iOS----在檢視中獲取父檢視控制器

在實際專案當中,我們經常會遇到需要在一個父類為UIView的子檢視上進行POP或是PUSH操作,但該子檢視是不能用POP或PUSH的,這時候我們就可以根據該子檢視獲取到父檢視的控制器,從而進行POP或P

IOS初學-導航檢視控制器的使用

檢視控制器的跳轉方式。入棧和出棧 首先需要建立兩個檢視控制器 在FirstSubViewController中修改程式碼 //導航檢視控制器的使用     func test1()  {         se

在滾動檢視新增檢視(UIScrollView)

在我做一個學習APP的時候,遇到讓我很頭疼的問題,頭疼的原因是因為我自己太菜了吧! APP的大部分功能都是在一個滾動檢視上完成的,幾乎所有頁面都加在滾動檢視上的,因為每一頁都是一道題目,而且題目非常多,每個年級每一單元這樣來分類的。 題目型別也比較多,我不可能一道題都設計一

iOS開發~檢視超過父檢視範圍的事件響應問題

當按鈕超過了父檢視範圍,點選是沒有反應的。因為訊息的傳遞是從最下層的父檢視開始呼叫hittest方法。 - (UIView *)hitTest:(CGPoint)point withEvent:(UI

IOS】分隔檢視控制器 (UISplitViewController)

轉自:http://www.cnblogs.com/wayne23/p/3596814.html 這種控制器只能用於iPad,它可以在iPad螢幕中顯示兩個不同的場景:在橫向模式下,左邊顯示一個表,供使用者選擇;使用者選擇表中的元素後,詳細檢視將顯示該元素的詳細資訊。如

利用addChildViewController管理檢視控制器

蘋果在iOS5中給UIViewController新增加的5方法以及一個屬性: // 方法 addChildViewController: removeFromParentViewController: transitionFromViewControll

ios開發之檢視控制器(UIViewController)-- 詳解

由於本人也是初學ios開發,下面分享一下本人在自學中關於檢視控制器(UIViewController)的多種建立方法的總結(詳解)。 控制器的建立方式 注意: 以下程式碼都是在(Xcode 6.

iOS詳細解析檢視控制器的正向和逆向傳值

本文主要介紹在不同的檢視控制器之間進行傳值,分為兩種傳值方式,正向傳值比較容易,逆向傳值相對於正向來說麻煩一點,需要使用代理或者是block 一、正向傳值 正向傳值只需要在第一個檢視控制器中“拿到”第

imageview新增檢視

os開發UI篇—在ImageView中新增按鈕以及Tag的引數說明 一、tag引數 一個檢視通常都只有一個父檢視,多個子檢視,在開發中可以通過使用子檢視的tag來取出對應的子檢視。方法為Viewwithtag: 提示點:在xib中如果想要通過tag引數獲取對應的控制

UIView中新增檢視UISCrollview後UITouch事件不響應

做跑馬燈元件時,需要在UIView檢視中新增子檢視UIScrollview,以便可以進行多個內容的向上滾動顯示,同時也在UIView中添加了UITouch事件,但是UITouch點選卻沒有響應。 怎麼解決呢? 出現問題原因:UIScrollView自身就有手勢響應的事件,從

ios獲取檢視在父檢視的父檢視的座標

例如:self.view中add了一個tableView,tableViewCell中添加了一個textField,想要獲得textField在self.view中的座標。 CGRect textFrame = [textField.superview convertRec

iOS開發UITabBarController使用,新增控制器方法

建立一個UITabBarController,匯入需要新增的子控制器進行新增,在AppDelegate裡設定為根檢視 @implementation MainTabBarController - (void)viewDidLoad {     [supe

iOS 工作之餘-- 將一個控制器的View新增到某個控制器控制器並給出frame

在實際的開發中,有很多需求,需要在下面顯示一塊區域,用於某些功能,如回覆評論,禮物打賞,顯示購物金額等等。。。這時候,就可以用到本文的方式,簡單的程式碼,效果也很好。 不多囉嗦,直接上核心程式碼。 1.在ViewController上,建立介面,點選功能,彈出下面區域AVC(新增一個

iOS-獲取視圖父控制器

blog pan control end sna uiview nco 當前 控制 開發中有的時候需要涉及當前視圖的父級視圖,可以通過UIResponder來獲取,有兩種實現方式: UIView *next=sender; while ([next superview]

iOS列印控制元件檢視

這裡,介紹一個剛剛學到的技巧:我們可以使用UIView的私有方法recursiveDescription來看一下UI控制元件的檢視層次結構,在控制檯打印出它的繼承關係。 如:po [self.searchBar recursiveDescription] 列印結果如下: 從以上可以看出,在