Добавить элементы в UIAlertview - PullRequest
1 голос
/ 13 мая 2011

Мне нужно вставить представление (пользовательскую кнопку) под 2 кнопками по умолчанию для представления предупреждений в проекте iphone.Я долго ищу, но не могу найти, как вставить элемент под кнопки, советы?

1 Ответ

0 голосов
/ 19 мая 2011

Не совсем понятно, что вы пытаетесь сделать, но есть несколько возможностей.Если вам просто нужны обычные кнопки, вы можете прикрепить их столько, сколько захотите, с помощью параметра otherButtons.

UIAlertView* anAlert = [[UIAlertView alloc] initWithTitle:@"My Alert" message:@"This is My Alert" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Other", @"Other2", nil];

Вы также можете использовать addButtonWithTitle, чтобы добавить столько, сколько хотите.

UIAlertView* anAlert = [[UIAlertView alloc] initWithTitle:@"My Alert" message:@"This is My Alert" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"OK", nil];
[anAlert addButtonWithTitle:@"My Other Button"];

Если вам действительно нужна пользовательская кнопка, все становится сложнее.Заклинивать произвольные представления в UIAlertViews - мое хобби (см. Мои посты в блоге на тему здесь , здесь и здесь ).Однако во всех этих случаях представления оказываются выше обычных кнопок;кнопки привязаны к нижней части вида, и я не знаю, как изменить это поведение.

Одна вещь, которую вы можете сделать, это создать UIAlertView без кнопок, а затем создать и добавить столько пользовательских кнопок, сколько вы хотите.Во-первых, я хотел бы отметить, что это, вероятно, плохая идея.Это не будет хорошим опытом для пользователей, и, если вы не TapBots , придерживаться Apple HIG обычно хорошая идея.

Сказав все это,что-то вроде этого может работать:

UIAlertView* anAlert = [[UIAlertView alloc] initWithTitle:@"My Alert" message:@"This is My Alert\n\n\n\n" delegate:self cancelButtonTitle:nil otherButtonTitles:nil];

UIButton* okButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
okButton.frame = CGRectMake(12, 80, 130, 50);
[okButton setTitle:@"OK" forState:UIControlStateNormal];
[anAlert addSubview:okButton];

UIButton* cancelButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
cancelButton.frame = CGRectMake(144, 80, 130, 50);
[cancelButton setTitle:@"Cancel" forState:UIControlStateNormal];
[anAlert addSubview:cancelButton];

UIButton* otherButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
otherButton.frame = CGRectMake(12, 136, 260, 50);
[otherButton setTitle:@"My Other Button" forState:UIControlStateNormal];
[anAlert addSubview:otherButton];   

Перевод строки в конце сообщения оповещения расширяет представление оповещения по горизонтали, освобождая место для добавления ваших кнопок.Здесь я просто делаю простые кнопки UIB (что выглядит ужасно);надеюсь, ваши пользовательские кнопки выглядят лучше.Вам нужно выложить их самостоятельно, жестко закодировав координаты, что является хрупким (и изменяется в зависимости от вашего сообщения и ориентации экрана).Наконец, так как нет никаких кнопок по умолчанию, нет способа отменить предупреждение, поэтому вам нужно обязательно прикрепить обработчики к этим кнопкам, чтобы это произошло.Вы можете сделать это с помощью addTarget:action:forControlEvents: на кнопках.

...