0

始める前にいくつかのポイント: 私はこのコードを引き継いだばかりで、iOS コードの経験はほとんどありません。

以下にいくつかのコードがありますが、以前はUIActionSheet. iOS 8 では UIActionSheet が削除されました (Apple に感謝します!) ので、すべてを使用するように変更し始めましたUIAlertController...解決した多くの問題に遭遇しました。今は完全に混乱しており、皆さんからの経験豊富な助けが必要です....!

ここにスクリーンショットがあります ここに画像の説明を入力

ご覧のUIAlertControllerとおり、 が表示されていますが、UIView が正しく配置されていないため、コントロールを使用できません! 期待どおりに数字をドラッグできますが、それほど簡単ではありません...

ご覧のように 3 つのコントローラーがあり、1 つは日時の選択用、もう 1 つは乗客数の選択用、もう 1 つは車両の種類の選択用です。

すべての iOS8 携帯電話で機能する簡単な修正が必要です。コード全体がかなり悪く、アプリを再設計したいので、コード全体を書き直すために誰かを雇おうとしているので、少し危険な場合があります。一気飲み。

さらに詳しい情報が必要な場合はお知らせください。繰り返しになりますが、私の iOS コーディングの経験は非常に少ないです (Android ほどではありませんが、楽しんでいるので学びたいと思います)。

else if (selectedTableField == travelTimeText || selectedTableField == noPassengers || selectedTableField == carType) {

            // setup actionsheet to contain the UIPicker

            if (version < 8)
            {
            actionSheet = [[UIActionSheet alloc] initWithTitle:@"            "
                                                      delegate:self
                                             cancelButtonTitle:nil
                                        destructiveButtonTitle:nil
                                             otherButtonTitles:nil];

            [actionSheet showInView:self.view];
            }

            if (version >= 8)
            {
                alertController = [UIAlertController alertControllerWithTitle:@"title"
                                                                    message:@"messages"
                                                             preferredStyle:UIAlertControllerStyleAlert];
            }

            //CGRect actionSheetBounds = CGRectMake(0,0,320 + offset, 570);

            CGRect actionSheetBounds;

            if (selectedTableField == travelTimeText)
               // actionSheetBounds = CGRectMake(0,0,320 + offset, 655);

            if (version >= 8)
            {
                [alertController.view setBounds:actionSheetBounds];
            }
            else
            {
                [actionSheet setBounds:actionSheetBounds];
            }

            UIView *bgView = [[UIView alloc] initWithFrame:actionSheetBounds];

            if (version < 7)
                bgView.backgroundColor = [[[ConfigManager sharedInstance].skin valueForKey:@"popupBackgroundColour"] toUIColor];

            UIButton *doneBtn = [UIButton buttonWithType:UIButtonTypeCustom];
            // swap asap and select around if on travel time picker
            if (selectedTableField == travelTimeText) {
                doneBtn.frame = CGRectMake(10+bOffset, 305, 300, 40);
            } else {
                doneBtn.frame = CGRectMake(10+bOffset, 250, 300, 40);
            }
            [doneBtn addTarget:self action:@selector(pickerDone:) forControlEvents:UIControlEventTouchUpInside];
            [doneBtn setBackgroundImage:[UIImage imageNamed:@"button_large.png"] forState:UIControlStateNormal];
            [doneBtn setTitle:@"Select" forState:UIControlStateNormal];
            doneBtn.titleLabel.font = [UIFont boldSystemFontOfSize:19];
            doneBtn.titleLabel.textColor = [[[ConfigManager sharedInstance].skin valueForKey:@"popupButtonFontColour"] toUIColor];
            [bgView addSubview:doneBtn];

            UILabel *title = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320 + offset, 20)];
            title.font = [UIFont boldSystemFontOfSize:12];
            title.backgroundColor = [UIColor clearColor];
            title.textAlignment = UITextAlignmentCenter;
            title.textColor = [[[ConfigManager sharedInstance].skin valueForKey:@"popupLabelFontColour"] toUIColor];

            if (selectedTableField == travelTimeText) {
                title.text = @"Booking Time";

                UIButton *asapBtn = [UIButton buttonWithType:UIButtonTypeCustom];
                asapBtn.frame = CGRectMake(10 +bOffset, 250, 300, 40);
                [asapBtn addTarget:self action:@selector(pickerAsap:) forControlEvents:UIControlEventTouchUpInside];
                [asapBtn setTitle:@"As soon as possible" forState:UIControlStateNormal];
                [asapBtn setBackgroundImage:[UIImage imageNamed:@"button_large.png"] forState:UIControlStateNormal];
                asapBtn.titleLabel.font = [UIFont boldSystemFontOfSize:19];
                asapBtn.titleLabel.textColor = [[[ConfigManager sharedInstance].skin valueForKey:@"popupButtonFontColour"] toUIColor];
                [bgView addSubview:asapBtn];
            } else if (selectedTableField == noPassengers)
                title.text = @"Passengers";
            else
                title.text = @"Vehicle";

            [bgView addSubview:title];

            [title release];
            if (version < 8)
            {
            [actionSheet addSubview:bgView];
            }
            else
            {
                [alertController.view addSubview:bgView];
            }
            [bgView release];

            // travel time uses a different picker
            if (selectedTableField == travelTimeText) {
                UIDatePicker *datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0.0 + bOffset, 20, 0.0, 0.0)];

                [datePicker addTarget:self action:@selector(travelTimeChanged:) forControlEvents:UIControlEventValueChanged];
                datePicker.datePickerMode = UIDatePickerModeDateAndTime;
                datePicker.minuteInterval = 5;
                if (travelTime == nil)
                    datePicker.date = [[NSDate date] addTimeInterval:15*60];
                else
                    datePicker.date = travelTime;

                if (version < 8)
                {
                [actionSheet addSubview:datePicker];
                }
                else
                {
                    [alertController.view addSubview:datePicker];
                }

                // update table field to show now
                [self travelTimeChanged:datePicker];

                [datePicker release];

                if (version >= 8)
                {
                    [self presentViewController:alertController animated:NO completion:nil];
                }

            } else {
                UIPickerView *picker = [[UIPickerView alloc] initWithFrame:CGRectMake(0.0 + bOffset, 20, 0.0, 0.0)];
                picker.dataSource = self;
                picker.delegate = self;
                if (selectedTableField == noPassengers) {
                    picker.showsSelectionIndicator = YES;
                    [picker selectRow:[passengerOptions indexOfObject:noPassengers.text] inComponent:0 animated:NO];
                } else if (selectedVehicle != nil) {
                    [picker selectRow:[filteredCarOptions indexOfObject:selectedVehicle] inComponent:0 animated:NO];
                }
                if (version < 8)
                {
                [actionSheet addSubview:picker];
                }
                else
                {
                    [alertController.view addSubview:picker];
                }

                [picker release];

                if (version >= 8)
                {
                    [self presentViewController:alertController animated:NO completion:nil];
                }
            }

        } else if (selectedTableField == bookButton) {
            // validate the form
            [self validateForm];
        }
4

1 に答える 1