我正在创建一个Master-Detail Splitview应用程序,我在UIAlertView
方法中使用insertNewObject
让用户为要添加到主视图的新对象定义标题。我已经使用了Warkst的这个问题linky中的代码和指南。
我的问题是,当调用警报视图时,insertNewObject函数的其余部分继续运行,因此创建一个带有空白标题的新对象,因为它在AlertView甚至有机会出现之前完成运行。
我正在使用的代码如下,第一种方法是insertNewObject
,第二种方法是按下按钮时AlertView调用的方法。 newTitle
是一个全局变量。
- (void)insertNewObject:(id)sender
{
//Make sure clear before we start, also make sure initalized (double redundancy with clear statement at end)
newTitle = @"";
//New Title pop up UIAlert View
UIAlertView * alert = [[UIAlertView alloc]
initWithTitle:@"New Object"
message:@"Please enter a name for object"
delegate:self
cancelButtonTitle:@"Create"
otherButtonTitles:nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
UITextField * alertTextField = [alert textFieldAtIndex:0];
alertTextField.keyboardType = UIKeyboardTypeDefault;
alertTextField.placeholder = @"Enter a new title";
[alert show];
//Create and enter new object.
if (!_objects)
{
_objects = [[NSMutableArray alloc] init];
}
[_objects insertObject:newTitle atIndex:0];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
//Clear newTitle for use next time
newTitle = @"";
}
UIAlertView按钮点击方法
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
newTitle = [[alertView textFieldAtIndex:0] text];
}
答案 0 :(得分:1)
您希望在UIAlertViewDelegate
方法alertView:clickedButtonAtIndex:
中进行对象创建,因为(正如您所注意到的)显示警报的调用不会阻止方法的其余部分执行。
此外,如果相关,您可能希望通过添加其他按钮让用户取消操作。