我正在尝试通过将其替换为从警报视图返回的文本来替换数组中的对象。
到目前为止,我有:int selected = indexPath.row;
和我的alertview委托方法。
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if (alertView.tag == 1) {
[myMutableArray replaceObjectAtIndex:selected withObject:[[alertView textFieldAtIndex:0] text]];
[_tableView reloadData];
}
}
我一直收到错误
不兼容的整数到指针转换从'NSInteger'(又名'long')分配给'NSInteger *'(又名'long *')
答案 0 :(得分:2)
您看到的错误来自于您在NSInteger变量之前放置*
的事实。
答案 1 :(得分:0)
在不知道代码的其余部分是什么样的情况下,您可以在ViewController.m文件中尝试此操作。它设置标签的文本,并在按下“确定”按钮时用警报视图中的文本替换可变数组中的对象。
#import "ViewController.h"
@interface ViewController () <UIAlertViewDelegate>
@property (strong,nonatomic) NSMutableArray *mutArray;
@property (weak,nonatomic) IBOutlet UILabel *label;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSArray *array = @[@"item1",@"item2",@"item3"];
self.mutArray = [[NSMutableArray alloc] init];
self.mutArray = [array mutableCopy];
}
- (IBAction)showAlert:(id)sender {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"My Alert Example"
message:@"message here"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"OK",nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
[alert show];
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
int selected = 1;
if (buttonIndex != alertView.cancelButtonIndex) {
NSLog(@"ok button");
UITextField *textField = [alertView textFieldAtIndex:0];
self.label.text = textField.text;
[self.mutArray replaceObjectAtIndex:selected withObject:textField.text];
NSLog(@"mutArray is %@",self.mutArray);
} else {
NSLog(@"cancel button");
}
}
@end
由于看起来您使用的是UITableView,在您的情况下,您将使用int selected = indexPath.row
而不是int selected = 1
。