我创建了一个具有属性的自定义 UITabelViewCell:
@property (nonatomic, strong) UINavigationController *navigationController;
合成:
@syntethized navigationController = _navigationController
“建设者”:
+ (CustomCell *)cellForTableView:(UITableView *)tableView navigationController:(UINavigationController *)navigationController {
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:kCustomCellIdentifier];
if(cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"AddressCell" owner:self options:nil];
for (id currentObject in topLevelObjects)
if ([currentObject isKindOfClass:[UITableViewCell class]]) {
cell = (CustomCell *) currentObject;
break;
}
}
cell.navigationController = navigationController;
return cell;
}
用方法:
- (IBAction)viewMapAction:(id)sender {
MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
[_navigationController pushViewController:controller animated:YES];
}
当我按下里面的按钮时CustomCell
,导航控制器MyViewController
会正常推动。里面MyViewController
有一个MKMapView
带有注释的,并且在viewDidAppar
里面MyViewController
[_mapView selectAnnotation:myAnnotation]
已经调用了,但是没有显示一个标注(弹出)。如果我按下注释,标注也不会显示。
为什么?
如果我更改 my 的构造函数/属性CustomCell
并传递目标/选择器而不是,并在 my 内部而不是在 my 中UINavigationController
创建一个,则地图标注会正常显示。但是我会将所有单元格动作集中在单元格类中。viewMapAction
UITableViewController
CustomCell