Jak wykonać to zadanie? Zasadniczo, będę mieć tablicę "sekund int" wymienionych wewnątrz UITableView. Jak więc przypisać każde "sekundy int" do odliczania do zera? Możliwe problemy, które widzę, to nieaktualizowanie liczników, gdy komórka nie jest jeszcze utworzona. I jak utworzyć instancję wielu niezależnych NSTimerów aktualizujących różne elementy interfejsu użytkownika? Jestem tu dość zagubiony, więc wszelkie sugestie są mile widziane. w celach wizualnych, chcę mieć coś takiego:wiele timerów odliczania wewnątrz uitableview
Odpowiedz
Z obrazu wygląda na to, że model to zestaw działań, które użytkownik planuje podjąć. Ułożyłbym wszystko w ten sposób:
1) MojaAkcja jest zbiorem NSO z nazwą i terminem. MyAction realizuje coś takiego:
- (NSString *)timeRemainingString {
NSDate *now = [NSDate date];
NSTimeInterval secondsLeft = [self.dueDate timeIntervalSinceDate:now];
// divide by 60, 3600, etc to make a pretty string with colons
// just to get things going, for now, do something simple
NSString *answer = [NSString stringWithFormat:@"seconds left = %f", secondsLeft];
return answer;
}
2) StatusViewController utrzymuje uchwyt do modelu będącego NSArray od MyActions, ma też NSTimer (tylko jeden), który informuje go czas przemija.
// schedule timer on viewDidAppear
// invalidate on viewWillDisappear
- (void)timerFired:(NSTimer *)timer {
[self.tableView reloadData];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.model.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MyAction *myAction = [self.model objectAtIndex:indexPath.row];
// this can be a custom cell. to get it working at first,
// maybe start with the default properties of a UITableViewCell
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.text = [myAction timeRemainingString];
cell.detailTextLabel.text = [myAction name];
}
mieć fajne rzeczy UI w tabeli takiego, może chcesz podklasy UITableViewCell i stworzyć czasomierz jako właściwość w każdym. Komórka może wtedy posiadać delegata, który odpowiada na TimerWentOff i obsługuje dzwonienie alarmu, powiadomienia lub czegokolwiek innego. Każdy zegar aktualizowałby etykietę w jej komórce.
Mam nadzieję, że trochę pomaga. Jeśli masz więcej szczegółowych pytań, daj mi znać.
Dzięki! Tworzenie niestandardowej komórki nie stanowi problemu, już to mam. A więc ta część "Komórka może wtedy być właścicielem delegata" to jest część, która tworzy zegar odliczający? Czy powinienem wstawić nstimery do tablicy i uzyskać dostęp do jednej metody aktualizacji etykiet w mojej komórce? – Diffy
- 1. Erlang: czy wiele timerów jest ok?
- 2. dodanie UITableView wewnątrz UITableViewCell
- 3. Wiele NsfetchedResultsController na UItableView
- 4. select() - w stanie timerów
- 5. timerów Linux c
- 6. Swift - UITableView wewnątrz UIViewController, funkcje UITableView nie są nazywane
- 7. Jak dodać czas do odliczania?
- 8. UITableView Problemy z przewijaniem, gdy wewnątrz UIScrollView
- 9. Przycisk wewnątrz niestandardowej komórki uitableview nie działa
- 10. Wiele klas wewnątrz: nie()
- 11. Android: Jak zatrzymać i wznowić licznik odliczania?
- 12. Wskazówki dotyczące odliczania odwołań COM od
- 13. Nie można dodać PrototypeCell do UITableView wewnątrz pliku XIB
- 14. Wiele zadania wewnątrz if-oświadczenie
- 15. Analogowe do wyczekiwanych timerów w .NET
- 16. Opóźnienie gry w xna za pomocą timerów
- 17. IOS - Tworzenie i używanie interwałowych timerów szczegółowych
- 18. Jak dodać pull tableview do odświeżania danych wewnątrz uitableview
- 19. Problemy z dodawaniem UITableView wewnątrz kontrolera UIViewController w Swift
- 20. Wiele funkcji wewnątrz łańcucha za pomocą LESS
- 21. Jeden plik SVG, wiele gradientów SVG wewnątrz
- 22. Granica sekcji UITableView
- 23. Metoda wywołania na wątku GUI z wątku timerów
- 24. UITableView DidSelectRowAtIndexPath?
- 25. UITableView titleForSection
- 26. UITableView scrollToRowAtIndexPath
- 27. MKMapView wewnątrz UITableViewCell
- 28. Sekcja UITableView z tłem clearColor?
- 29. Programowo wyróżnij komórkę UITableView
- 30. Jak wyświetlać wiele obrazów wewnątrz UIScrollView w iOS
dzięki stary! w jaki sposób ta etykieta (cell.textLabel.text = [myAction timeRemainingString];) będzie aktualizowana przy każdym tiku? jak nazywasz to co sekundę? – Diffy
np. ustawisz kontroler widoku na "delegata" i "źródło danych" tabeli (powinienem to wspomnieć). gdy pojawią się tyknięcia, poprosisz stolik o ponowne załadowanie danych. stół zajmie się resztą. oddzwoni do Ciebie, aby zapytać, ile komórek ma załadować, i skonfigurować każdą komórkę - obie metody opisane w dostarczonym kodzie. – danh
OK, mam to działa .. teraz próbuję zmienić twoją - (NSString *) metodę timeMemishingString na - (NSString *) timeRemainingString: (NSTimeInterval) secondsZawiera, żebym mógł przekazać moją tablicę sekund zamiast ustalonej wartości. Jak zachować referencję tej wartości, aby odliczała 1 sekundę za każdym razem, gdy tabela jest ponownie ładowana? – Diffy