Как я могу отобразить экран-заставку для дольше на iPhone?

Вы не должны использовать implode. Это помещает разделенный запятыми список всего в форме в каждую строку, которую вы вставляете, и повторяет это для каждого проверенного окна. Вы должны просто вставить один элемент в каждую строку, индексируя массивы.

Однако, если у вас есть флажок в форме, он отправляет только те, которые отмечены. Результатом этого является то, что индексы массива $_POST['checkbox'] не будут совпадать с соответствующими элементами $_POST['item'] и $_POST['quantity']. Вам нужно поместить явные индексы в имена checkbox, чтобы вы могли связать их.

<form method = "POST">

<input type = "hidden" name = "item[]" value = "cupcake">
<input type = "text" name = "items" value = "cupcake" readonly><br>
<b>Price :</b> <span name = "price" value = "3.00">$17.00</span><br>
Quantity: <input tabindex="1" name="quantity[]" min="0" max="5" type="number" class="quantity" value="1" /><br>
<input tabindex="1" name="checkbox[0]" type="checkbox" value="17" /><span>Add to Cart</span></label></div></div></td><br>

<input type = "hidden" name = "item[]" value = "cake">
<input type = "text" name = "items" value = "cake" readonly><br>
<b>Price :</b> <span name = "price" value = "20.00">$20.00</span><br>
Quantity: <input tabindex="1" name="quantity[]" min="0" max="5" type="number" class="quantity" value="1" /><br>
<input tabindex="1" name="checkbox[1]" type="checkbox" value="20" /><span>Add to Cart</span></label></div></div></td><br>

<input type = "submit" name = "insertBT"><br>
</form>

Тогда ваш PHP-код может быть таким:

$stmt = $conn->prepare("INSERT INTO purchases (Product, Quantity, Price) VALUES (?, ?, ?)");
$stmt->bind_param("sis", $name, $quantity, $price);
foreach ($_POST['checkbox'] as $i => $price) {
    $name = $_POST['name'][$i];
    $quantity = $_POST['quantity'][$i];
    $stmt->execute();
}

BTW, цены в вашем HTML кажутся плохой идеей. Ничто не мешает пользователю изменять HTML с помощью веб-инспектора перед отправкой формы, чтобы они могли снизить цену. Вы должны получить цены из базы данных при обработке формы.

Также обратите внимание, что в исходном коде вы открыли соединение с базой данных с помощью MySQLi, но затем вы попытались сделать вставку, используя mysql_query вместо $conn->query(). Вы не можете смешивать такие API; myql_query может использоваться только при открытии соединения с mysql_connect.

49
задан Timothy Carter 2 September 2009 в 17:11
поделиться

10 ответов

Прочитайте Инструкции по интерфейсу пользователя (HIG) Apple iPhone. "Экран-заставка", как предполагается, не для брендинга или отображения логотипа, это, как предполагается, похоже на условие по умолчанию приложения, таким образом, это, кажется, запускает быстро.

Создание этого остаться там для дольше было бы нарушением HIG.

39
ответ дан Paul Tomblin 7 November 2019 в 11:17
поделиться

Запишите фактический класс экрана-заставки.

Вот свободно применимый экран-заставка, который я недавно отправил в своем iPhone в блоге Действия: http://iphoneinaction.manning.com/iphone_in_action/2009/03/creating-a-splash-screen-part-one.html

1
ответ дан Shannon A. 7 November 2019 в 11:17
поделиться

Заставьте свое приложение занять больше времени для загрузки.

Во всей серьезности, Paul Tomblin корректен, что это обычно не хорошая идея. Default.png является механизмом, предназначенным, чтобы заставить Ваше приложение, казаться, загружаться быстрее путем содержания "пустого" снимка экрана. Используя его для экрана-заставки незначительное злоупотребление, но намеренно создание, что экран-заставка появляется для дольше, чем он, должно, почти больно. (Это также ухудшит Ваш пользовательский опыт. Помните, каждую секунду экран-заставка видим, секунда, что пользователь нетерпеливо уставился на Ваш логотип, клянясь, что они переключатся на первого достойного конкурента, которого они могут найти.)

, При попытке покрыть для своего рода вторичной загрузки - например, если интерфейс загрузился и Вы просто ожидаете для получения некоторых данных из сети - затем это, вероятно, хорошо, и подход Ben Gottlieb прекрасен. Я предложил бы добавить индикатор выполнения или счетчик, чтобы прояснить пользователю, что что-то действительно продолжается.

3
ответ дан Brent Royal-Gordon 7 November 2019 в 11:17
поделиться

Самый простой способ сделать это должно создать UIImageView, который является изображением, Ваш Default.png. В Вашем applicationDidFinishLaunching: метод, добавляют, что представление изображения к Вашему окну, и скрывает его, когда Вы хотели бы, чтобы Ваш экран-заставка ушел.

26
ответ дан Ben Gottlieb 7 November 2019 в 11:17
поделиться

Мне нужно было сделать это, чтобы заблокировать отображение табличного представления, пока данные не будут загружены по сети. Я использовал вариант одного, который нашел здесь:

http://michael.burford.net/2008/11/fading-defaultpng-when-iphone-app.html

В интерфейсе вашего делегата приложения:


@interface AppDelegate : NSObject 
{
  UIImageView *splashView;
}

В реализации:


@implementation AppDelegate
- (void)applicationDidFinishLaunching:(UIApplication *)application {


  // After this line: [window addSubview:tabBarController.view];

  splashView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
  splashView.image = [UIImage imageNamed:@"Default.png"];
  [window addSubview:splashView];
  [window bringSubviewToFront:splashView];

  // Do your time consuming setup

  [splashView removeFromSuperview];
  [splashView release];
}

Убедитесь, что у вас есть Default.png в ресурсах

21
ответ дан 7 November 2019 в 11:17
поделиться

Чтобы узнать, как выглядит стильный экран-заставка, ознакомьтесь с этим http://adeem.me/blog/2009/06/22/creating-splash-screen-tutorial-for-iphone/

0
ответ дан 7 November 2019 в 11:17
поделиться

Вот мой простой код заставки. splashView - это выход для представления который содержит логотип изображения, UIActivityIndicator и метку «Загрузить ..» (добавлено в мой MainWIndow.xib в IB). Индикатор активности в IB установлен на «анимацию», Затем я создаю отдельный поток для загрузки данных. Когда закончите, снимаю splashView и добавьте мое обычное представление приложения:

-(void)applicationDidFinishLaunching:(UIApplication *)application {
    [window addSubview:splashView];
    [NSThread detachNewThreadSelector:@selector(getInitialData:) 
                                 toTarget:self withObject:nil];
}

-(void)getInitialData:(id)obj {
    [NSThread sleepForTimeInterval:3.0]; // simulate waiting for server response
    [splashView removeFromSuperview];
    [window addSubview:tabBarController.view];
}
2
ответ дан 7 November 2019 в 11:17
поделиться

просто использовать спящий режим (время в секундах); в методе applicationDidFinishedLaunching

3
ответ дан 7 November 2019 в 11:17
поделиться

Я сделал это довольно просто, заставив мой rootViewController подтолкнуть modalViewController, загружаясь из «Splash.nib» в подклассе UIViewController, который я назвал «SplashViewController». Точный вызов был:

- (void) viewDidLoad {
SplashViewController *splashScreen = [[[SplashViewController alloc]    
        initWithNibName:@"SplashViewController" bundle:nil] autorelease];
[self presentModalViewController:splashScreen animated:NO];
//continue loading while MVC is over top...

Когда вы запускаете приложение, оно выскакивает, как и должно быть на заставке. Тогда перо SplashViewController - это просто полноэкранный UIImageView с всплеском png, 320x480. После 1-секундного NSTimer (казалось, что-то еще мешает), он запускает timerFireMethod, специальный метод, который просто вызывает

[self dismissModalViewControllerAnimated:YES];

. Затем модальный VC просто скользит вниз и в сторону, оставляя мой верхний tableView. Приятно то, что пока работает MVC, основная таблица может продолжать загружаться из-за независимой природы контроллеров модального представления. Итак, я не думаю, что это нарушает HIG, и действительно позволяет ускорить запуск. Что бы вы предпочли посмотреть, симпатичную картинку или пустой вид по умолчанию (храп)?

14
ответ дан 7 November 2019 в 11:17
поделиться

Я согласен с тем, что может иметь смысл иметь заставку при запуске приложения, особенно если ему сначала нужно получить данные с веб-сайта.

Что касается Apple HIG - взгляните на приложение (MobileMe) iDisk; пока вы не зарегистрируете сведения о своем члене, приложение покажет типичный uitableview Default.png, а затем очень быстро отобразит полноэкранный вид.

0
ответ дан 7 November 2019 в 11:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: