0

私はUIPageControllerxib ファイルに配置したので、適切な配置を取得できましたが、xib に設定された「currentPage」の値は、以下のように別の値に設定しようとしたときに currentPage が想定する値です。UIScrollView途中から開始するときにmy を適切な初期画像に設定するコード行(つまり、ページ 0 ではない):

aScrollView.contentOffset = CGPointMake((currentIndex + 0.0) * screenWidth, 0.0);

呼び出す

-(void) scrollViewDidScroll: (UIScrollView*) aScrollView
{
    // Update the page control to match the current scroll:
    CGPoint offset = aScrollView.contentOffset;
    float width = self.view.frame.size.width;
    int pageNumber = (int)(offset.x / width);
    uiPageControl.currentPage = pageNumber;
    NSLog(@"%g // %g = %d", offset.x, width, (int)(offset.x/width));

}

pageNumber 整数は正しいので、オフセットから目的のページ番号を適切に計算しています。ただし、currentPage を手動で (プログラムで) 設定しようとすると、pageNumber に設定されず、xib の値に設定されます。

簡単な解決策は、xib を使用せずにすべてプログラムで行うことですが、座標などの知識がなくても配置するのは簡単だったので、xib で を引き続き使用する方法を知りたいですUIPageController。通常、xib に設定されている属性はプログラムで上書きできるので、このバグには本当に驚きました。currentPage を適切に設定する方法について何か提案はありますか?

ご協力いただきありがとうございます!

4

1 に答える 1

0

私の問題を一時的に解決するハックを見つけました.xibで、「ページ数」の値を、これまでのページ数よりも大きくなることがわかっている値に設定しました。

これが小さすぎる場合、その値を超えて currentPage を設定しても何も起こらなかったことがわかります。これは、xib にあるページ数よりも小さい数値にクランプまたは設定していたためです。

この xib 属性を高く設定すると、 currentPage の設定が機能します。

いきなりのトリガーでごめんなさい。

于 2013-10-24T10:06:10.167 に答える