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
@property (nonatomic, strong) UIScrollView *headScrollView;
@property (nonatomic, strong) NSMutableArray *itemArray;
@property (nonatomic, strong) UIView *contentVie
第一步:頭部列表檢視的建立
_itemArray = [NSMutableArrayarrayWithObjects:@"頭條",@"今日",@"焦點",@"呵呵" ,nil];
_headScrollView = [[
_headScrollView.backgroundColor = [UIColorcolorWithWhite:0.902alpha:1.000];
for (int i = 0; i<_itemArray.count; i++) {
UIButton *itemButton = [[UIButtonalloc]initWithFrame:CGRectMake(i*([UIScreenmainScreen
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] 列印結果如下: 從以上可以看出,在