いくつかの静的セルを含む UITableView があります。そのうちの 1 つは、タッチすると UIActionSheet を表示します。そのコードは次のとおりです。
viewDidLoad: コントロールを初期化します。
- (void)viewDidLoad
{
[super viewDidLoad];
[self initializeControls];
}
initializeControls: UIActionSheet を表示するために、セル内のラベルにジェスチャ認識エンジンを追加します。
- (void)initializeControls {
[...]
// Places Label
self.placeNamesLabel.userInteractionEnabled = YES;
tapGesture = \
[[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(didPlaceNamesLabelWithGesture:)];
[self.placeNamesLabel addGestureRecognizer:tapGesture];
tapGesture = nil;
[...]
}
didPlaceNamesLabelWithGesture: UIActionSheet を初期化し、StoryBoard から UITableView を追加し、閉じるボタンを追加します。
- (void)didPlaceNamesLabelWithGesture:(UITapGestureRecognizer *)tapGesture
{
// Show UITableView in UIActionView for selecting Place objects.
placesActionSheet = [[UIActionSheet alloc] initWithTitle:nil
delegate:nil
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:nil];
[placesActionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];
CGRect tableFrame = CGRectMake(0, 40, 0, 0);
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
AddArticlesPlacesViewController *placesView = [storyBoard instantiateViewControllerWithIdentifier:@"PlacesForArticle"];
placesView.managedObjectContext = self.managedObjectContext;
placesView.view.frame = tableFrame;
[placesActionSheet addSubview:placesView.view];
placesView = nil;
UISegmentedControl *closeButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"Close"]];
closeButton.momentary = YES;
closeButton.frame = CGRectMake(260, 7.0f, 50.0f, 30.0f);
closeButton.segmentedControlStyle = UISegmentedControlStyleBar;
closeButton.tintColor = [UIColor blackColor];
[closeButton addTarget:self action:@selector(dismissPlacesActionSheet:) forControlEvents:UIControlEventValueChanged];
[placesActionSheet addSubview:closeButton];
closeButton = nil;
[placesActionSheet showInView:[[UIApplication sharedApplication] keyWindow]];
[placesActionSheet setBounds:CGRectMake(0, 0, 320, 485)];
}
disconnectPlacesActionSheet: UIActionSheet を閉じます。
-(void)dismissPlacesActionSheet:(id)sender {
[placesActionSheet dismissWithClickedButtonIndex:0 animated:YES]; }
すべてが機能し、UITableView は Core Data から正常に読み込まれます。では、どこに問題があるのでしょうか。ポイントは、任意の行がタップされると、テーブル全体が空になることです (まだ画像を投稿できません、申し訳ありません)。
AddArticlesPlacesViewController へのプッシュ セグエを起動するボタンを使用して、新しいカスタム行を追加しようとしました。これは正常に機能し、動作は期待どおりです。したがって、問題は UIActionSheet と UITableView の間にあります。
両方のビュー コントローラーのインターフェイスは次のとおりです。
主要。
@interface AddArticleViewController : UITableViewController <NSFetchedResultsControllerDelegate, [...]>
[...]
@property (weak, nonatomic) IBOutlet UILabel *placeNamesLabel;
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
[...]
@end
セカンダリ。
@interface AddArticlesPlacesViewController : UITableViewController <NSFetchedResultsControllerDelegate>
@property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController;
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@end
私は立ち往生しています。私は何を間違っていますか?
よろしく。
ペドロ・ベンチュラ