Итак, у меня есть UITableView
, загруженный в UIViewController
. В таблице получить данные из NSMutableArray
Обновить UITableView после выбора ABPeoplePicker
Я добавил UIBarButtonItem
на NavigationBar
, который откроет ABPeoplePickerNavigationController
, чтобы выбрать контакт и добавить его имя в NSMutableArray
, которое будет отображаться в UITableView
на это резюме мой код
@interface LockedChatsTableView : UIViewController <UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate, ABPeoplePickerNavigationControllerDelegate>
@property (strong, nonatomic, retain) UITableView *tabView;
@property (strong, nonatomic) NSMutableArray *listArray;
@end
@implementation LockedChatsTableView
- (void)viewDidLoad {
UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(showPicker:)];
self.navigationItem.rightBarButtonItem = addButton;
self.navigationItem.title = @"Locked Chats";
[self.listArray removeAllObjects];
[self.view setBackgroundColor:[UIColor whiteColor]];
CGFloat width = [UIScreen mainScreen].bounds.size.width;
CGFloat height = [UIScreen mainScreen].bounds.size.height;
self.tabView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, width, height)];
self.tabView.alwaysBounceVertical = NO;
self.tabView.delegate = self;
self.tabView.dataSource = self;
self.listArray = [[NSMutableArray alloc] init];
NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile:[self path]];
self.listArray = [data objectForKey:@"LockedChats"];
[self.view addSubview:self.tabView];
}
// .... some tableview delegate method ....
-(void)addChatWithName:(NSString *)chatName {
NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile:[self path]];
NSMutableArray *lockedChats = [data objectForKey:@"LockedChats"];
[lockedChats addObject:chatName];
[data setObject:lockedChats forKey:@"LockedChats"];
[data writeToFile:[self path] atomically:YES];
}
-(void)removeChatWithName:(NSString *)chatName {
NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile:[self path]];
NSMutableArray *lockedChats = [data objectForKey:@"LockedChats"];
[lockedChats removeObject:chatName];
[data setObject:lockedChats forKey:@"LockedChats"];
[data writeToFile:[self path] atomically:YES];
}
// ====================== Contact Picker ======================== //
- (void)showPicker:(UIBarButtonItem *)sender {
ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
picker.peoplePickerDelegate = self;
[self presentViewController:picker animated:YES completion:nil];
}
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person {
NSString* name = (__bridge NSString*)ABRecordCopyValue(person, kABPersonFirstNameProperty);
NSString* lastname = (__bridge NSString*)ABRecordCopyValue(person, kABPersonLastNameProperty);
[self addChatWithName:[NSString stringWithFormat:@"%@ %@",name,lastname]];
[self dismissViewControllerAnimated:YES completion:nil];
// [self.tabView performSelectorOnMainThread:@selector(reloadData) withObject:nil];
// [self.tabView reloadData];
return NO;
}
// .... some other people picker delegate method ....
@end
Так что мой вопрос заключается в том, что, когда я выбрать контакт и сохранить его имя в массив, UITableView
не перегрузочный! Я попытался буквально каждый раствор Arround:
Я попытался
[self.tabView reloadData];
в разных местах, не ЛАК (может быть, потому, что его за пределами основного потока?)Я попытался
[self.tabView performSelectorOnMainThread:@selector(reloadData) withObject:nil];
также не перезагрузите таблицу.Я попробовал и прочитать многие другие ответы, найденные на StackOverflow не повезло
Я из идеи и работали над этим мало выпуск целый день! Ваша помощь очень ценится.
@rmaddy iphone был в списке предложений тегов, поэтому я выбрал его: p – iDev
Ничего о вашем вопросе не касается iPhone (физического устройства). Обновите свой вопрос с помощью методов 'numberOfSections' и' numberOfRowsInSection'. Когда вы добавляете вызов 'reloadData' в свой метод' addChatWithName: ', называются ли эти два метода источника данных? – rmaddy