2

私はユニバーサル iOS アプリを開発しており、ポップオーバーを実現しようとしています。WYPopoverController と FPPopover を試しましたが、これら 2 つで同じ問題が発生します。

各セルに静的テキストを配置する10個のセルを持つ単純な UITableViewController があります(テスト用)。

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
     return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 10;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath     *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier     forIndexPath:indexPath];

    UILabel *label = (UILabel *) [cell viewWithTag:1];
    [label setText:@"test"];

    return cell;
}

これをポップオーバーで表示してみてください。

FPPopoverを適用するサンプルコードは

- (IBAction)test:(id)sender {
    PopOverTableViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"PopOverTableViewController"];

    FPPopoverController *popOver = [[FPPopoverController alloc] initWithViewController:vc];

    [popOver presentPopoverFromView:sender];
}

これは、ボタンタップで10個のセルにテキストを表示しますが、テーブルビュー内をスクロールすると、テキストが消え、後でテーブルビューデータソースメソッドが呼び出されません。

WYPopoverController と FPPopover の両方で発生したため、私の側に何か問題があると想定しています。しかし、どこが間違っているのかわかりませんでした。

これについてあなたの助けに感謝します。

4

2 に答える 2

3

私の質問に答えてくれてありがとう。私は自分自身を解決しました。これは、ローカル変数に FPPopoverController があることが原因でした。強力なプロパティを持つインスタンス変数として配置する必要がありました。そうしないと、コントローラーが ARC によって割り当て解除されます。これにより、ポップオーバー フレームは引き続き表示されますが、ポップオーバー内のテーブル ビュー コンテンツは閉じられます。

于 2013-11-06T06:25:16.800 に答える
1

FFPopoverController が何をするのかはわかりませんが、通常のポップオーバー コントローラーの場合、ポップオーバー デリゲート メソッド「popoverControllerShouldDismissPopover」を使用して、次のようにポップオーバーの消失を制限できます。

-(BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController {
    return NO;
}

確かに、上記の方法を機能させるには、UIPopoverControllerDelegate をビュー コントローラーの .h ファイルに宣言し、ポップオーバー コントローラーの "delegate" プロパティを "self" に設定する必要があります。

于 2013-11-05T12:29:24.760 に答える