0

UIView と UIScrollView を含む xib ファイルがあります。

私のUIView内には、別のUIView(中央のwhile画面)があり、プログラムでscrollViewを追加したいと考えています。

その理由は、そこに scrollView を追加したいときと、mapView を追加したいときです。

私がしたことは次のようなものです:

CGRect frame = self.view.bounds;
    self.scrollView = [[UIScrollView alloc] initWithFrame: frame];
    CGSize pagesScrollViewSize = self.view.frame.size;
    self.scrollView.contentSize = CGSizeMake(pagesScrollViewSize.width * self.pageImages.count, pagesScrollViewSize.height);

UIScrollView のデリゲートも設定する必要があります。

私はそれを機能させることができませんでした。これは私のエラーです:

-[UIScrollView setPageId:]: unrecognized selector sent to instance 0x7dd84e0
2012-10-06 00:56:17.373 testN[3525:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIScrollView setPageId:]: unrecognized selector sent to instance 0x7dd84e0'

また、 scrollView をどこに接続すればよいかわかりませんdelegate。手伝って頂けますか?

4

2 に答える 2

3

取得しているエラーは、貼り付けたコードにはありません。おそらく、self.scrollView.pageId = ... などのコードが別の場所にあるためです。

それにもかかわらず、目的の効果を達成するために、画面の中央にある MKMapView、UIScrollView、および白い UIView の IBOutlet 参照をビュー コントローラーに追加する必要があります。

xib ファイルで scrollView のデリゲートを設定することもできます。それを右クリックし、デリゲート (アウトレットの下) の横にある円をファイルの所有者にドラッグします (ファイルの所有者が UIScrollViewDelegate を実装する UIViewController であると仮定します)。

次に、viewDidLoad には次のようなものがあります

- (void)viewDidLoad {
    [super viewDidLoad];

    self.scrollView.contentSize = self.scrollView.frame.size;
    self.scrollView.frame = self.whiteCenterView.bounds;
    [self.whiteCenterView addSubview:self.scrollView];
}

スクロール ビューは xib ファイルに既にあるため、コードで手動で割り当て/初期化しないでください。コントローラで viewDidLoad が呼び出されるまでに自動的に作成されます。

于 2012-10-05T23:50:47.110 に答える
1

インターフェイス ビルダーに UIScrollView を追加し、そこからデリゲートとファイル所有者を設定することで、これを正常に行うことができます。

UIView をストーリーボードの ViewController に追加したいので、このコードは機能しないことに注意してください。

NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"OfferView" owner:self options:nil];
UIView *newPageView = [views lastObject];

私は使用する必要があります:

UIView *newPageView = [views objectAtIndex:0];
于 2012-10-06T14:58:38.980 に答える