Kru*_*nal 1 iphone integer nsmutablearray ipad uipopovercontroller
我是一名新的iPad开发人员.
我按下按钮实现UIPopover,popover包含整数值,
当我试图用整数填充我的数组时它向我显示SIGABRT:索引3超出界限我无法看到我的日志,应用程序崩溃.
这是我的代码片段:
-(void)btnClick:(id)sender {
for (int i=3; i<=31; i++) {
[remindarray addObject:[NSNumber numberWithInteger:i]];
NSLog(@"no=%@",[remindarray objectAtIndex:i]);
}
UIViewController* popoverContent = [[UIViewController alloc]init];
UIView* popoverView = [[UIView alloc] initWithFrame:CGRectMake(110, 0, 500, 4)];
popoverTable = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, 250, 665) style:UITableViewStylePlain];
[popoverTable setDelegate:(id<UITableViewDelegate>)self];
[popoverTable setDataSource:(id<UITableViewDataSource>)self];
[self.view addSubview:popoverTable];
[popoverTable release];
[popoverView addSubview:popoverTable];
popoverContent.view = popoverView;
popoverContent.contentSizeForViewInPopover = CGSizeMake(250, 600);
self.popoverController = [[UIPopoverController alloc]
initWithContentViewController:popoverContent];
[self.popoverController presentPopoverFromRect:CGRectMake(100,0, 535, 35)
inView:self.view permittedArrowDirections:UIPopoverArrowDirectionRight animated:YES];
[popoverView release];
[popoverContent release];
}
Run Code Online (Sandbox Code Playgroud)
最后remind array我要去cellForRowAtIndexPath
码:
...
cell.textLabel.text=[remindarray objectAtIndex:indexPath.row];
...
Run Code Online (Sandbox Code Playgroud)
你的for循环从3开始,所以在数组中以0项开始,然后你插入1项并尝试在索引3处记录该项,这仍然不在数组中
快速解决方法是
更改
NSLog(@"no=%@",[remindarray objectAtIndex:i]);
Run Code Online (Sandbox Code Playgroud)
至
NSLog(@"no=%@",[remindarray objectAtIndex:i - 3]);
Run Code Online (Sandbox Code Playgroud)
或者从0开始数组
你还需要改变
cell.textLabel.text=[remindarray objectAtIndex:indexPath.row];
Run Code Online (Sandbox Code Playgroud)
至
cell.textLabel.text=[NSString stringWithFormat:@"%@", [remindarray objectAtIndex:indexPath.row]];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
595 次 |
| 最近记录: |