2012-10-25 9 views
9

Buduję prostą aplikację do notatek i chcę dodać statyczny pasek na dole TableView. Na przykład chcę dodać przycisk pomocy. Jak mogę to zrobić tylko dla mojego TableView?Jak dodać pasek narzędzi do TableView w iOS

tej pory:

Dodałem pasek narzędzi poprzez ujęć, ale to czyni go trzymać na koniec ostatniego wykonanego komórce tableview. Chcę, żeby utknęła na dnie. Wszedłem ten kod to zrobić programowo:

@property (strong, nonatomic) IBOutlet UIToolbar *toolbar; 

w moim pliku tableViewController.h i

[self.view addSubview:_toolbar]; 
[self.navigationController.view setFrame:self.view.frame]; 

w moim pliku tableViewController.m w moim viewDidLoad metody

dzięki!

Odpowiedz

10

najlepszym rozwiązaniem jest użycie UIViewController zamiast UITableViewController. (Zostało to powiedziane powyżej, ale pozwól mi podać szczegóły).

Utwórz nowy UIViewController z odpowiednim XIB. Wewnątrz nowego widoku UIViewController przeciągnij w UITableView, zmień jego rozmiar i przeciągnij pasek UIToolbar, gdzie chcesz.

Powinieneś mieć coś takiego:

enter image description here

Czarna granicę stanowi główny pogląd UIViewController użytkownika. Czerwona granica reprezentuje widok tabeli. Niebieska ramka reprezentuje pasek narzędzi.

Następnie dostosuj UIViewController do dwóch protokołów: UITableViewDelegate i UITableViewDataSource. Będziesz musiał ręcznie wdrożyć jego podstawowe metody, takie jak cellForRowAtIndexPath, numberOfRowsInSection, itp., Ale nie powinno to zająć ci dużo czasu.

Połącz swój UITableView z kontrolerem UIViewController. Połącz także właściwości "źródło danych" i "deleguj" do kontrolera widoku.

Przygotuj konfigurację w mniej niż 15 minut.

+0

dzięki sooo wiele !! Rozgryzłem to! –

+0

Dobra odpowiedź, tak myślę! – why

-1

Spróbuj tego, doda twój pasek narzędzi jako stopkęWidok tabeli. i upewnij się, że nadałeś stopie wysokości stołu jako 44 (wysokość paska narzędzi).

self.tableView.tableFooterView = _toolbar; 
+0

dziękuję, próbowałem, ale to nie zadziałało. Może zrobiłem coś złego? –

+0

To po prostu przykleja pasek narzędzi pod tableView nie na dole ekranu. –

0

Należy użyć ViewController zamiast TableViewController

Następnie dokonać TableView jako IBOutlet w pliku nagłówka. Zadeklaruj delegata i źródło danych. Jesteś gotowy do pracy.

1

Dodawanie paska narzędzi za pomocą kodów jest proste.

UIToolbar *toobar = [[UIToolbar alloc]initWithFrame:frameYouNeed]; 
toobar.barStyle = UIBarStyleBlack; 
[self.view addSubview:toobar]; 

Ale byłoby lepiej, gdyby użyć UITableView jako podrzędny, zamiast UITableViewController

+0

dziękuję, ale to jest ściąganie błędów –

+0

tak jak @Leonnears powiedział, uczynić pasek narzędzi i tableView jako dwa subViews twojego viewController – BabyPanda

3

Możesz użyć standardowego kontrolera UITableViewController z storyboardem. W "symulowanych metrykach" przejdź do menu paska dolnego i wybierz "Pasek narzędzi". Pojawi się pasek narzędzi. Następnie możesz dodać do niego elementy przycisku.

+1

To jest poprawna odpowiedź. Tak prosty. Używam tej metody od lat. Dlaczego ludzie robią tak wiele z tego? Udzielanie takich zawiłych odpowiedzi! –

6

Właśnie znalazłem lepszą lewę!

  1. Upewnij się, że NIE Pasek nawigacji (od twoich nieudanych prób)
  2. przeciągnij i upuść „pasek przycisków Item” (Xcode będzie magicznie umieścić go na ciebie na dole)
  3. UWAGA: Jeśli uruchomisz aplikację teraz nic nie zobaczysz! (Aby utrzymać wartość)
  4. dodać następującą linię kodu pod viewDidLoad:

    self.navigationController.toolbarHidden = NO;

Zrobione!

+0

fajnie - jeśli nie chcesz ich w innych widokach po prostu ustaw na false ... teraz, gdy używamy szybkiego – DogCoffee

+0

Dobra sztuczka !!. Zastanawiam się, dlaczego domyślnie pasek narzędzi wychodzi na dół. Czy to nie jest sprzeczne z Apple HIG? Do szybkiego użycia self.navigationController? .toolbarHidden = false – Das

0

Możesz użyć paska narzędzi, który jest zawarty we wszystkich widokach UITableViews i dodać do niego elementy UIBarButtonItems. Pomimo nazwy, UIBarButtonItems można dostosować do dowolnego widoku. Następnie dodajesz je do właściwości self.toolbarItems, która jest domyślnie dostępna dla UITableViews. np.

UIBarButtonItem * textItem; 
UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 250, 48)]; 
label.text = @"ImportantText"; 
label.adjustsFontSizeToFitWidth = YES; 
label.textAlignment = NSTextAlignmentRight; 
textItem = [[ UIBarButtonItem alloc ] initWithCustomView:label]; 

UIBarButtonItem * switchItem; 
UISwitch * switchCtrl = [[UISwitch alloc] init]; 
[switchCtrl addTarget:self action:@selector(toggleSomething:) forControlEvents:UIControlEventValueChanged]; 
switchItem = [[ UIBarButtonItem alloc ] initWithCustomView:switchCtrl]; 

self.toolbarItems = [ NSArray arrayWithObjects: 
        [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil], 
        textItem,switchItem,nil ]; 
0

Mam ten pracuje w Storyboard sprawdzając Pokaż pasek narzędzi w kontroler nawigacji. Następnie przeciągając Elementy Przycisków Baru do wyszarzonego obszaru paska narzędziowego, teraz pokazanego u dołu Kontrolera widoku stołu. Następnie okablowanie elementów przycisku paska aż do metod Kontroler nawigacyjny.

Powiązane problemy