Как да използвате един и същ изглед [Storyboard] за множество раздели и просто да променяте малки неща в него в зависимост от избрания раздел? (iOS)

Знам, че този въпрос е формулиран някак странно, но нека обясня какво се опитвам да направя:

Да кажем, че имам приложение с 2 раздела, всеки със собствен изглед. И двата изгледа са почти напълно еднакви, с изключение на това, че единият съдържа бутон или два, които другият не съдържа, и обратното.

Вече направих един изглед в режим Storyboard, сега искам да променя само малка част от него и да използвам отново същия изглед за другия раздел.

Не искам да правя задълбочено копие, защото ако променя едното, ще трябва да променя другото и това може да причини известна несъответствие между двете.

И така, как трябва да използвам един и същ общ изглед за множество раздели и просто да променя малки неща в него в зависимост от това в кой раздел се намирам?

Трябва ли да добавя универсалното съдържание в изгледа на разкадровката и след това да добавя програмно конкретното ексклузивно за раздел съдържание? Ако направих това, ще ми трябва начин да открия кой раздел е избран, нали? Има ли начин да направите това?

Благодаря ви за всякакви предложения!


person giant91    schedule 20.07.2013    source източник


Отговори (1)


За това нямате нужда от Storyboard. Разбира се, можете да плъзнете изглед там и да го присвоите на конкретен клас и да програмирате всички неща в него, но ако наистина имате нужда само от един изглед там, сценарият е безполезен. Трябва да се справите с подизгледите програмно, ако искате да промените нещо. Това е много добре и имате страхотни функции като animationWithDuration:

За да проверите кой раздел във вашия UITabBarController е избран, можете да използвате self.tabBarController.selectedIndex и да го сравните с дадения индекс на раздела, който е избран.

РЕДАКТИРАНЕ:

Ако приемем, че имате зелен бутон в раздел с индекс 0 и същият бутон трябва да се плъзне малко по-горе и червен бутон трябва да се появи на мястото на зеления бутон, когато се докосне раздел с индекс 1.

UIButton *greenButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 320, 100, 20)];
    greenButton.backgroundColor = [UIColor greenColor];
    [self.view addSubview:greenButton];


    UIButton *redButton = [[UIButton alloc] initWithFrame:CGRectMake(0, greenButton.frame.origin.y, 100, 20)];
    greenButton.backgroundColor = [UIColor redColor];

    if (self.tabBarController.selectedIndex == 1) {
        [UIView animateWithDuration:1.0 animations:^{
            greenButton.frame = CGRectMake(0, 300, 100, 20);
        } completion:^(BOOL finished) {
            [self.view addSubview:redButton];
        }];
    }

Първо създавате двата бутона и добавяте зеления към изгледа. (Първият изглед е с индекс 0). След това проверявате дали избраният индекс е 1 и анимирате бутоните наоколо.

person Sebastian    schedule 20.07.2013
comment
Истинското ми приложение има около 10-15 изгледа, просто казвах, че има 2 изгледа, за да не усложни нещата. Създадох го с изглед Storyboard, защото е доста подробен и отнема цяла вечност да се прекомпилира всеки път, когато променя нещо. Но това е, което питах: как да накарам подизгледите да се променят програмно в зависимост от избрания раздел? Това възможно ли е? - person giant91; 21.07.2013
comment
Ааа, благодаря ти! Току-що видях вашата редакция, +1 за „self.tabBarController.selectedIndex“ - person giant91; 21.07.2013
comment
Вижте моята редакция по-горе за програмно анимиране на подизгледите. - person Sebastian; 21.07.2013