как можно сделать вкладку iphone, которая загружает выбранные данные из массива и изменяется в зависимости от выбора пользователя.сделать вкладку фаворитов iphone
ответ
Alx,
Простой сценарий будет создать NIB на основе UITableViewCell
(есть много учебников там для этого), который имеет метку на нем какое-то.
Что вы можете сделать, так это захватить содержимое этикетки, когда пользователь выбирает ячейку и сохраняет ее в изменяемом массиве, который затем хранится в NSUserDefaults
.
Затем вы можете получить доступ к NSUserDefaults
из другого представления и использовать его для заполнения закладки «Избранное», как вы просили.
Немного кода примера, который поможет (если исходные данные находятся в UITableView, как вы сказали в предыдущем вопросе). Я пишу это с моей головы (не проверенный код), поэтому вам придется выработать какие-либо ошибки, но идея правильная.
// in the .h file
#import <UIKit/UIKit.h>
@interface MyViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {
// set up a mutable array which allows editing of the array
NSMutableArray *myFavoritesData;
}
// set up a retained property
@property (nonatomic, retain) NSMutableArray *myFavoritesData;
@end
// in the .m file
// synthesize the getters/setters for your array
@synthesize myFavoritesData;
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// find cell that was just pressed
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
// get pointer for the label that we want to identify the cell by
// the tag in this case is set to '5' in Interface Builder in the options for the label
UILabel *someLabel;
someLabel = (UILabel *)[cell viewWithTag:5];
NSString *tmpFavorite = someLabel.text;
// get the count of the current array and use that for the "new" row since the count
// will always be 1 larger than the last object in the array (arrays start at 0, counts start at 1)
NSUInteger newRow = [self.myFavoritesData count];
[self.myFavoritesData insertObject:tmpFavorite atIndex:newRow];
}
// save the mutable array into NSUserDefaults when the view is about to disappear
- (void) viewWillDisappear:(BOOL)animated
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:self.myFavoritesData forKey:@"MyFavorites"];
// synchronize the data now instead of waiting for the OS to synchronize it at some
// arbitrary time in the future
[userDefaults synchronize];
}
После того, как вы в новом контроллере представления, вы можете просто прочитать из NSUserDefaults
и заполнить таблицу из массива. Например:
// favorites view controller
- (void)viewDidLoad {
[super viewDidLoad];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *tmpArray = [[NSMutableArray alloc] init];
tmpArray = [[userDefaults objectForKey:@"MyFavorites"] mutableCopy];
if ([tmpArray count] == 0) {
//
// no favorites have ever been saved
//
} else {
// load the favorites into some array you synthesized just like before
self.tableFavoritesData = [[NSMutableArray alloc] init];
self.tableFavoritesData = [[userDefaults objectForKey:@"MyFavorites"] mutableCopy];
NSLog(@"favorites data is %d and %@", [self.tableFavoritesData count], self.tableFavoritesData);
}
[tmpArray release];
}
Тогда в вашем cellForRowAtIndexPath
фаворитов просмотра контроллера вы просто получить доступ к каждой строке в каждом индексе массива (так, строка для индекса 0 будет идти в строке 0, строка для индекса 1 будет идти в строка 1 и т. д.), и это то, что заполнило бы ваш любимый стол!
Попробуйте это.
спасибо большое, я получил структуру того, что im пытается получить сейчас ... одна небольшая проблема, связанная с тем, что я не хочу получать содержимое ячеек. Я хочу получить содержимое представления, которое отображается ячейкой. Я предполагаю, что вам нужно изменить этот код UILabel * someLabel; someLabel = (UILabel *) [вид ячейкиWithTag: 5]; NSString * tmpFavorite = someLabel.text; ? я попытался с помощью (? [[RootArray objectAtIndex: indexPath] установлено]; однако это действительно не работать :( –
Как вы 'rootArray' определены Если он определен аналогично тому, как я определил мои изменяемые массивы выше, вы бы сделали: '[self.rootArray objectAtIndex.indexPath.row];' где 'indexPath.row' является int и указывает текущую строку нажатой – iwasrobbed
- 1. Как бы вы начали создавать вкладку фаворитов для приложения iphone?
- 2. Как WhatsApp добавляет свой значок на вкладку своих контактов и вкладку фаворитов в iPhone SDK
- 3. как сделать в кнопке, как на вкладке фаворитов iphone phone app
- 4. Создайте список фаворитов в AngularJS
- 5. Хранение «фаворитов» в cookie Rails?
- 6. Как сделать вкладку?
- 7. Дамп фаворитов Internet Explorer в файл
- 8. Запрос для большинства фаворитов в каждой категории
- 9. Приоритет фаворитов в Rails SQL-запрос
- 10. Создайте список фаворитов в Ionic Framework
- 11. Программный переход на вкладку «Дополнительно» на iPhone
- 12. iphone + скрывать вкладку при нажатии любого вида
- 13. Как сделать одну вкладку незаметной?
- 14. Как сделать вкладку нажатой кнопкой?
- 15. Сделать вкладку ng-keypress игнорировать
- 16. Сделать вкладку indent текущей строкой
- 17. Невозможно сделать вкладку Boostrap выше
- 18. Как сделать вкладку в HTML?
- 19. Сделать вкладку активным в Bootstrap
- 20. iPhone - UIButton выбрать вкладку в другом представлении
- 21. iPhone TabBarController - настроить выбранную вкладку программно
- 22. SharedPreferences для создания списка фаворитов в приложении
- 23. Как использовать пользовательскую вкладку iPhone в FragmentActivity?
- 24. Установить пользовательскую вкладку OpenFeint (приложение для iPhone)
- 25. Как остановить дополнительную вкладку в развитии iphone?
- 26. Сделать первую вкладку активным по умолчанию
- 27. Как сделать вкладку с помощью jQuery
- 28. Как я могу сделать прозрачную вкладку?
- 29. Как сделать вкладку управления переключателем с jquery?
- 30. Плагин Eclipse: Сделать вкладку blink on event?
Возможно. Однако ваш вопрос слишком расплывчатый. –