我有一个名称列表UITableView
。tableView 的委托是一个 viewController。我使用 anIBAction
来调用UIAlertView
(带有文本字段),以便用户可以向 tableView 添加另一个名称:
- (IBAction)addGuest:(UIButton *)sender
{
// open a alert with text field, cancel and add button
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Add New Guest" message:@"Example: John Doe" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Add", nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
[alert show];
}
当用户单击中的“添加”按钮时UIAlertView
,我将文本字段中的信息写入 plist:
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 1) {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0];
NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"Guests.plist"];
[self.guestList addObject:[[alertView textFieldAtIndex:0] text]];
NSMutableDictionary *plistDict = [NSMutableDictionary dictionaryWithObjects:[NSArray arrayWithObjects:guestList, nil] forKeys:[NSArray arrayWithObjects:@"nameList", nil]];
NSString *error = nil;
NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:plistDict format:NSPropertyListXMLFormat_v1_0 errorDescription:&error];
if (plistData) {
[plistData writeToFile:plistPath atomically:YES];
} else {
NSLog(@"Error in saveData: %@", error);
}
}
}
此时,我想在 tableView 上重新加载(在上述方法内),以便出现新添加的名称。我已将UIAlertView
' 的委托设置为 self.
但是,[self.tableView reloadData]
不起作用,因为在此方法中无法识别 tableView。我已经尝试了很多变化,但我无法得到任何工作。
我该怎么做呢 ?
谢谢!