利用segment切換三個(gè)控制器

需求如下:


屏幕快照 2019-04-18 上午9.45.45.png

點(diǎn)擊今日待辦、我的待辦频鉴、我的辦結(jié)切換不同的頁面栓辜。

思路:

  • 上一篇文檔中,我針對(duì)segment切換頁面的時(shí)候垛孔,采用的是數(shù)據(jù)源的切換藕甩,然后頁面共用的是一個(gè)。但是今天這個(gè)需求變了周荐,因?yàn)槊總€(gè)頁面對(duì)應(yīng)的數(shù)據(jù)源是有些變化的狭莱,比如今日待辦中,每一個(gè)item中概作,是有點(diǎn)擊下載的按鈕腋妙,包括不同的頁面,對(duì)應(yīng)的headerView也不一樣讯榕。所以我就想到了骤素,創(chuàng)建一個(gè)管理器VC來管理三個(gè)不同的控制器。每個(gè)控制器完成各自的功能愚屁。

具體實(shí)現(xiàn):

@interface SCInspectionManageVC ()
@property (nonatomic,strong)SCSegmentView *segmentView;
@property (nonatomic, strong)SCInspectionTodayTodoVC *todayVC;//今日待辦
@property (nonatomic, strong)SCInspectionTodoVC *todoVC;     //我的待辦
@property (nonatomic, strong)SCInspectionCompleteTodoVC *completeVC;//我的辦結(jié)
@property (nonatomic, strong) UIViewController *currentViewController;
@property (nonatomic,strong)SCInspectionTodoInteractor *interactor;

@end
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    [self setNavItem];
    [self addSubViews];
    [self setConstraints];
    [self addChildViewControllers];
}

- (void)addChildViewControllers{
    self.todayVC = [[SCInspectionTodayTodoVC alloc] init];
    self.todayVC.view.frame = CGRectMake(0, kStatusBarAndNavigationBarHeight, kSCREEN_WIDTH, kSCREEN_HEIGHT-iPhoneXSafeAreaBottomHeight-kStatusBarAndNavigationBarHeight);
    [self addChildViewController:self.todayVC];
    
    self.todoVC = [[SCInspectionTodoVC alloc] init];
    self.todoVC.view.frame = CGRectMake(0, kStatusBarAndNavigationBarHeight, kSCREEN_WIDTH, kSCREEN_HEIGHT-iPhoneXSafeAreaBottomHeight-kStatusBarAndNavigationBarHeight);
    [self addChildViewController:self.todoVC];
    
    self.completeVC = [[SCInspectionCompleteTodoVC alloc] init];
    self.completeVC.view.frame = CGRectMake(0, kStatusBarAndNavigationBarHeight, kSCREEN_WIDTH, kSCREEN_HEIGHT-iPhoneXSafeAreaBottomHeight-kStatusBarAndNavigationBarHeight);
    [self addChildViewController:self.completeVC];
    
//設(shè)置當(dāng)前最先展示的頁面 很重要
    self.currentViewController = self.todayVC;
    [self.view addSubview:self.todayVC.view];
}

- (void)setConstraints{
    [self.segmentView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.height.mas_equalTo(48);
        make.top.leading.trailing.mas_equalTo(self.view);
    }];
}

- (void)setNavItem{
    self.title = @"巡檢待辦";
}

-(void)addSubViews{
    [self.view addSubview:self.segmentView];
    self.view.backgroundColor = [UIColor SCBackGroundColor];
}

-(SCSegmentView *)segmentView{
    if (!_segmentView) {
        _segmentView = [[SCSegmentView alloc]initWithItemList:@[@"今日待辦",@"我的待辦",@"我的辦結(jié)"]];
        @Weakify(self);
        _segmentView.segmentSwitchBlock = ^(long segmentIndex) {
            @Strongify(self);
            [self segmentValueChanged:segmentIndex];
        };
    }
    return _segmentView;
}

-(SCInspectionTodoInteractor *)interactor{
    return _interactor = _interactor?:[[SCInspectionTodoInteractor alloc]init];
}

下面這個(gè)是實(shí)現(xiàn)標(biāo)簽切換最重要的一個(gè)步驟

- (void)segmentValueChanged:(long )selectedSegmentIndex{
    if ((self.currentViewController==self.todayVC&&selectedSegmentIndex==0)||(self.currentViewController==self.todoVC&&selectedSegmentIndex==1) ||(self.currentViewController==self.completeVC&&selectedSegmentIndex==2) ) {
        return;
    }
    
    UIViewController *oldViewController=self.currentViewController;
    switch (selectedSegmentIndex) {
        case 0:
            [self replaceFromOldViewController:oldViewController toNewViewController:self.todayVC];
            break;
        case 1:
            [self replaceFromOldViewController:oldViewController toNewViewController:self.todoVC];
            break;
        case 2:
            [self replaceFromOldViewController:oldViewController toNewViewController:self.completeVC];
            break;

        default:
            break;
    }
}

//控制器切換
- (void)replaceFromOldViewController:(UIViewController *)oldVC toNewViewController:(UIViewController *)newVC{
    [self transitionFromViewController:oldVC
                      toViewController:newVC
                              duration:1
                               options:UIViewAnimationOptionTransitionCrossDissolve
                            animations:^{
                            }
                            completion:^(BOOL finished) {
                                if (finished) {
                                    self.currentViewController=newVC;
                                }else{
                                    self.currentViewController=oldVC;
                                }
                            }];
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末济竹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子霎槐,更是在濱河造成了極大的恐慌送浊,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丘跌,死亡現(xiàn)場(chǎng)離奇詭異罕袋,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)碍岔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門浴讯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蔼啦,你說我怎么就攤上這事榆纽。” “怎么了捏肢?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵奈籽,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我鸵赫,道長(zhǎng)衣屏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任辩棒,我火速辦了婚禮狼忱,結(jié)果婚禮上膨疏,老公的妹妹穿的比我還像新娘。我一直安慰自己钻弄,他們只是感情好佃却,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著窘俺,像睡著了一般饲帅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瘤泪,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天灶泵,我揣著相機(jī)與錄音,去河邊找鬼对途。 笑死赦邻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的掀宋。 我是一名探鬼主播深纲,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼仲锄,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼劲妙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起儒喊,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤镣奋,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后怀愧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體侨颈,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年芯义,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了哈垢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡扛拨,死狀恐怖耘分,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情绑警,我是刑警寧澤求泰,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站计盒,受9級(jí)特大地震影響渴频,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜北启,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一卜朗、第九天 我趴在偏房一處隱蔽的房頂上張望拔第。 院中可真熱鬧,春花似錦聊替、人聲如沸楼肪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽春叫。三九已至,卻和暖如春泣港,著一層夾襖步出監(jiān)牢的瞬間小泉,已是汗流浹背仑嗅。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人邀层。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像最域,于是被迫代替她去往敵國(guó)和親咒程。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • “忙箫柳,懶手形,煩” 似乎成了很多人不愿提早10分鐘起來做早餐的理由。 對(duì)于早餐悯恍,很多人都選要么不吃库糠,要么隨便吃。忙著上...
    小芳帶你健康瘦閱讀 571評(píng)論 1 0
  • 說實(shí)話涮毫,處在這樣一個(gè)信息爆炸的年代瞬欧,要讓自己知道對(duì)自己而言什么事是真正重要的,挺難罢防。先不說別的艘虎,就拿“吃什么健康?...
    yydhdl閱讀 678評(píng)論 0 1
  • 上海女人 下午咒吐,去街道辦事處辦事野建。進(jìn)門,感覺像走進(jìn)一家銀行渤滞,寬敞贬墩,潔凈。人不多妄呕,也不...
    東來到西啦閱讀 196評(píng)論 0 1
  • 最近特別困陶舞,坐著就能睡著,不分時(shí)間不分場(chǎng)合绪励。俗話說“春困秋乏夏打盹肿孵,睡不醒的冬三月”唠粥,看來天冷的真是提前入冬了。明...
    沈磊閱讀 315評(píng)論 0 0