gpt4 book ai didi

iphone - 按下 UIAlertView 按钮后如何在 tableView 中重新加载数据?

转载 作者:行者123 更新时间:2023-11-29 13:37:23 27 4
gpt4 key购买 nike

我在 UITableView 中有一个姓名列表。 tableView 的委托(delegate)是一个 viewController。我使用 IBAction 调用 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 的委托(delegate)设置为自己。

但是,[self.tableView reloadData] 不起作用,因为在此方法中无法识别 tableView。我尝试了很多变体,但我什么都做不了。

我该怎么做?

谢谢!

最佳答案

每个 View Controller 都有一个 View 。您的 TableView 的委托(delegate) Controller 的 View 是 TableView 吗?如果是这样,请尝试:

[((UITableView *) self.view) reloadData]

在didDismissWithButtonIndex 方法的实现中。如果 tableView 的委托(delegate) Controller 也是 UIAlertView 的委托(delegate),则以上有效。你可以用:`

@interface SomeViewController : UIViewController
<UITableViewDataSource,
UITableViewDelegate,
UIAlertViewDelegate> { /* .... */ } /* ... */ @end

或更好(但并非总是可能):

@interface SomeViewController : UITableViewController      // <- Now you'll have self.tableView 
< UIAlertViewDelegate> { /* .... */ } /* ... */ @end

关于iphone - 按下 UIAlertView 按钮后如何在 tableView 中重新加载数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10221252/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com