TabBar с «перетаскиванием» для iOS 5 - PullRequest
0 голосов
/ 22 февраля 2012

Я хочу разработать приложение, которое имеет панель навигации вверху, TableView посередине и снизу, я хочу создать этот вид TabBar.Когда я перетаскиваю внутренний меньший прямоугольник, я хочу изменить содержимое TableView.Поэтому в основном я хочу, чтобы он действовал как обычный TabBar, где для каждого небольшого компонента я меняю свое представление (но не меняя NavigationBar).

Что было бы лучшим подходом к этому.Я новичок в разработке приложений для iOS.Спасибо

Я хочу что-то вроде этого:

enter image description here

Ответы [ 3 ]

1 голос
/ 22 февраля 2012

Я думаю, что лучший способ сделать это - создать пользовательский компонент.В UITabBar отсутствует «эффект перетаскивания».

Что вы должны сделать, это создать подкласс UIView, создающий 5 кнопок UIBiew внутри и один «мобильный» UIView, который будет иметь размер UIButton.

Конечновам понадобятся изображения для всех этих компонентов (но на самом деле это не сложно).

Они могут кодировать ваше пользовательское поведение внутри этого подкласса.

0 голосов
/ 22 февраля 2012

Так что, в основном, вы хотите перезагрузить таблицу для каждого нажатого сегмента,

создайте 3 массива NSMutable и заполните их данными.

предположим, arrOne, arrTwo и arrThree,

делай эти вещи

  - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section  {   int returnValue = 0;
    if(segment.tag == 0)        returnValue = [arrOne count]-1;     else 
    if(segment.tag == 1)        returnValue = [arrTwo count]-1;         else 
    if(segment.tag == 2)            returnValue = [arrTwo count]-1;         return
  returnValue;

  }



- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    if(segment.tag == 0)
        cell.text = [arrOne  objectAtIndex:indexPath.row];
    else    if(segment.tag == 1)
        cell.text = [arrTwo  objectAtIndex:indexPath.row];
        else    if(segment.tag == 2)
            cell.text = [arrThree  objectAtIndex:indexPath.row];
}

и каждый сегмент нажат:

[tblObject reloadData];
0 голосов
/ 22 февраля 2012

Редактировать: полностью забыл об эффекте перетаскивания.Тебя там не будет.Но, по крайней мере, это будет выглядеть примерно так ...

Если вы ориентируетесь на iOS5, вы можете использовать UISegmentedControl и стилизовать его под некоторые изображения.

Взгляните на раздел «Настройка UISegmentedControl» в учебнике Настройка интерфейса пользователя в iOS 5

Вы в основном создаете изображение для каждого возможного состояния (выбрано - выбрано, невыбранный - выбранный, выбранный - невыбранный и невыбранный - невыбранный) и использовать новые методы UIAppearance для создания пользовательского вида.

UIImage *segmentSelected = 
    [[UIImage imageNamed:@"segcontrol_sel.png"] 
        resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 0, 15)];
UIImage *segmentUnselected = 
    [[UIImage imageNamed:@"segcontrol_uns.png"] 
        resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 0, 15)];
UIImage *segmentSelectedUnselected = 
    [UIImage imageNamed:@"segcontrol_sel-uns.png"];
UIImage *segUnselectedSelected = 
    [UIImage imageNamed:@"segcontrol_uns-sel.png"];
UIImage *segmentUnselectedUnselected = 
    [UIImage imageNamed:@"segcontrol_uns-uns.png"];

[[UISegmentedControl appearance] setBackgroundImage:segmentUnselected 
    forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setBackgroundImage:segmentSelected 
    forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];

[[UISegmentedControl appearance] setDividerImage:segmentUnselectedUnselected 
    forLeftSegmentState:UIControlStateNormal 
    rightSegmentState:UIControlStateNormal 
    barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:segmentSelectedUnselected 
    forLeftSegmentState:UIControlStateSelected 
    rightSegmentState:UIControlStateNormal 
    barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] 
    setDividerImage:segUnselectedSelected 
    forLeftSegmentState:UIControlStateNormal 
    rightSegmentState:UIControlStateSelected 
    barMetrics:UIBarMetricsDefault];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...