好的,所以我有tableview控制器1.在tableview控制器1的didSelectRowAtIndexPathMethod内部,我尝试使用表视图调用popOver,具体取决于数据是否保证一个,看起来像这样:
UIViewController *popoverContent=[[UIViewController alloc] init];
UITableView *tableView=[[UITableView alloc] initWithFrame:CGRectMake(265, 680, 0, 0) style:UITableViewStylePlain];
UIView *popoverView=[[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 300)];
popoverView.backgroundColor=[UIColor whiteColor];
FirstTVController * firstTV = [[FirstTVController alloc]init];
// popOver.keyId = model.key_id;
popoverContent.view=popoverView;
popoverContent.contentSizeForViewInPopover=CGSizeMake(200, 420);
[tableView setDelegate:firstTV];
[tableView setDataSource:firstTV];
popoverContent.view=tableView; //Adding tableView to popover
UIPopoverController *popoverController=[[UIPopoverController alloc] initWithContentViewController:popoverContent];
[popoverController presentPopoverFromRect:CGRectMake(340, 400, 0, 0) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
现在,当我更改tableview数据源并委托给self时,它可以工作。但是当我设置表视图数据源和委托方法时,我感到很困惑,我得到一个返回UIApplicationMain(argc,argv,nil,NSStringFromClass([AppDelegate class])); EXC_BAD_ACCESS 我在这里做错了什么?
@interface FirstTVController : UITableViewController <UITableViewDataSource, UITableViewDelegate>
答案 0 :(得分:0)
firstTV
在此方法结束时超出范围。因此,表视图的数据源和委托属性指向无效对象。
你必须有可能的选择:
firstTV
设为实例变量,使其不会超出范围。UITableViewController
的自定义类来清理问题中的所有代码。没有理由创建通用UIViewController
,向其添加自己的表视图,然后使用另一个类作为表的数据源和委托。将所有这些内容整合到一个类中。