1

8 つのセグメントのセグメント化されたコントロールを統合して、動的テーブルのカスタム セルをプログラムで作成しました。

うまく機能しますが、セグメントの 1 つをタップすると、テーブルビューの下端ではなく、セルの近くにオプション付きのポップアップ メニューが表示されるようにしたいと思います。

これは、セグエをテーブルビューに固定したために発生したと思います。各セグメントにポップアップ メニューへのセグエを割り当てることは避けたいと思います。

選択したセグメントに応じて、ポップアップ メニューを自動的に再配置する可能性はありますか?

メイン ビュー コントローラー .m ファイルの関連コードは次のとおりです。

-(void)segmentSelectedAtRow: (UISegmentedControl *)sender{
if (self.flipsidePopoverController) {
    [self.flipsidePopoverController dismissPopoverAnimated:YES];
    self.flipsidePopoverController = nil;
} else {
    [self performSegueWithIdentifier:@"segueToChangeValues" sender:sender];
}

UITableViewCell *theParentCell = [[sender superview]superview];
NSIndexPath *indexPathOfSegment = [self.spreadSheetView indexPathForCell:theParentCell];

...
}

...

- (void)flipsideViewControllerDidFinish:(POTFlipsideViewController *)controller {

[self.flipsidePopoverController dismissPopoverAnimated:YES];
self.flipsidePopoverController = nil;
}

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {
self.flipsidePopoverController = nil;
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"segueToChangeValues"]) {
    [[segue destinationViewController] setDelegate:self];
    UIPopoverController *popoverController = [(UIStoryboardPopoverSegue *)segue popoverController];
    self.flipsidePopoverController = popoverController;
    popoverController.delegate = self;
}
}

@end

これがフリップサイドの.hファイルです

@class POTFlipsideViewController;

@protocol POTFlipsideViewControllerDelegate
- (void)flipsideViewControllerDidFinish:(POTFlipsideViewController *)controller;
@end

@interface POTFlipsideViewController : UIViewController

@property (weak, nonatomic) id <POTFlipsideViewControllerDelegate> delegate;

- (IBAction)done:(id)sender;
....
 @end

フリップサイド .m ファイルに関連するコードは次のとおりです。

#import "POTFlipsideViewController.h"

@interface POTFlipsideViewController ()

@end

@implementation POTFlipsideViewController

- (void)awakeFromNib
{
self.contentSizeForViewInPopover = CGSizeMake(320.0, 480.0);
 [super awakeFromNib];
 }

 - (void)viewDidLoad
{
    [super viewDidLoad];

}
return YES;
}

 - (IBAction)done:(id)sender
 {
    [self.delegate flipsideViewControllerDidFinish:self];
}

@end
4

0 に答える 0