2012-02-22 3 views
0

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

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

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

enter image description here

+2

Почему Wouldnt вы хотите изменить панель навигации? Я думаю, что путь для вас - создать приложение TabBar, причем каждая вкладка имеет свой собственный NavigationController. Когда вы меняете вкладки, отображаются разные таблицы. не используйте один и меняйте контент – pmk

+0

Да, я покажу различные таблицы, но я хочу, чтобы в моей панели вкладок был такой формат (что-то похожее на старый HTC Sense, если вы знаете, где вы перетаскиваете или щелкаете, и он меняет экран) – Cosmin

ответ

1

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

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

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

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

+0

Почему именно мне нужно создать 5 кнопок UIButtons? – Cosmin

+0

Если вы спросите о типе UIButton, я сказал, что, поскольку это сделает ваш пользовательский слайдер кликабельным, поскольку вы можете добавитьTarget и Selector в UIButton. – Ganzolo

+0

Для номера может быть 5,4,3 ...Я сказал 5, потому что UITabBar имеет максимум 5 секций – Ganzolo

0

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

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

Посмотрите на раздел «Настройка UISegmentedControl» в User Interface Customization in iOS 5 tutorial

Вы в основном создать изображение для каждого возможного состояния (выбранного - выбрано, невыбранной - выбранное, выбранного - невыбранные и невыбранной - невыбранный) и использовать новые методы 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]; 
+0

Да, к сожалению, мне нужен эффект перетаскивания. – Cosmin

0

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

создать 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

Я понимаю, но меня больше интересует, как я могу создать пользовательский компонент, я хочу эффект перетаскивания. – Cosmin

Смежные вопросы