始める前にいくつかのポイント: 私はこのコードを引き継いだばかりで、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];
}