2013-07-19 4 views
1

В моем приложении пользователь может создать новый файл. Я использую UIAlertView со стилем UIAlertViewStylePlainTextInput, чтобы предложить пользователю ввести имя для нового файла. Конечно, я хочу убедиться, что имя файла, введенное в текстовое поле, еще не существует.Возможно ли динамическое изменение сообщения UIAlertView?

Таким образом, когда пользователь изменяет текст в текстовом поле на осмотр, я хочу, чтобы проверить, существует ли файл с таким именем, и если уведомляет пользователя, устанавливая сообщение алерте вида по:

alertView.message = @"File exists! Please enter a different name."; 

Во всех в других случаях, когда файл с этим именем не существует, я вообще не хочу показывать сообщение. Я попробовал несколько вещей, но мне кажется, что единственный способ достижения этой цели является использование пробела в последнем случае:

if (fileExists) { 
    alertView.message = @"File exists! Please enter a different name."; 
} else { 
    alertView.message = @" "; 
} 

Недостатком здесь является то, что тревога вид будет показывать пустую строку в большинстве случаев (когда нет такого с таким именем), и я хотел бы избежать этого. Как я могу это сделать? Или есть другой, может быть, лучший способ уведомить пользователя?

ответ

1

Создать alertView

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Alert" message:[self getAlert] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [alertView show]; 

getAlert

- (NSString *)getAlert { 
    if(true) { 
     return @"String 1"; 
    } else { 
     return @"String 2"; 
    } 
    return @"null"; 
} 

Мы называем метод, чтобы получить строку, и в этом методе мы можем создавать условные операторы, чтобы увидеть, что строка, которую мы хотим использовать.

+0

Это выглядит как очень элегантное решение в первой. Проблема заключается в следующем: я хочу изменить сообщение просмотра предупреждений в зависимости от содержимого текстового поля предупреждения. Когда я использую метод 'getAlert' в' init'-методе представления предупреждения, представление предупреждения еще не инициализировано, поэтому нет способа передать текстовое поле вида предупреждения в метод просмотра предупреждения. – Mischa

+0

@Mischa Oh ... Я полностью неправильно прочитал ваш вопрос, позвольте мне придумать редактирование. –

1

Попробуйте запустить свою задачу в новом потоке, вызвав [self performSelectorInBackground: withObject:] и обновите текст UIAlertView, вызвав [self performSelectorOnMainThread: withObject: waitUntilDone:]. Я просто преуспел.

Эта тема также может быть полезно, внедряя рассчитать и настроить alertView кадр с анимацией для гладкости Updating UIAlertView Message dynamically and newline character issue

Смежные вопросы