2012-07-20 32 views
17

Tôi quan tâm trong việc đưa ra một UIAlertView trái phù hợp với nhiều dòng như một danh sách thông báo rằng sẽ trông giống như sau:Cách tạo nhiều dòng, UIAlertView được căn trái?

  • dòng 1
  • dòng 2
  • dòng 3

Dưới đây là những gì tôi có cho đến thời điểm này:

alert = [[UIAlertView alloc] initWithTitle: @"How to use buttons" 
            message: @"line 1. line 2, line 3 " 
            delegate: nil 
         cancelButtonTitle: @"OK" 
         otherButtonTitles: nil]; 

Tôi cũng muốn thay đổi màu của chế độ xem cảnh báo thành màu đỏ.

Trả lời

30

Dấu đầu dòng được biểu thị bằng mã unicode 0x2022. Tôi đã làm cho nó hoạt động như thế này bằng cách sử dụng "\ n" cho các dòng mới:

UIAlertView *alert = [[UIAlertView alloc] 
      initWithTitle: @"How to use buttons" 
      message: [NSString stringWithFormat: @"%C line 1.\n %C line 2,\n %C line 3", (unichar) 0x2022, (unichar) 0x2022, (unichar) 0x2022]; 
      delegate: nil 
      cancelButtonTitle:@"OK" 
      otherButtonTitles:nil]; 

Điều đó sẽ hiệu quả đối với các dấu đầu dòng.

Đối với sự liên kết trái, làm điều này:

NSArray *subViewArray = alertView.subviews; 
for(int x = 0; x < [subViewArray count]; x++){ 

    //If the current subview is a UILabel... 
    if([[[subViewArray objectAtIndex:x] class] isSubclassOfClass:[UILabel class]]) { 
     UILabel *label = [subViewArray objectAtIndex:x]; 
     label.textAlignment = NSTextAlignmentLeft; 
    } 
} 

Vì vậy, trong bản tóm tắt:

  • "\ n" để hiển thị dòng mới.
  • [NSString stringWithFormat:@"%C Line n", (unichar) 0x2022]; cho viên đạn.
  • Để liên kết , lặp qua các bản xem trước của chế độ xem cảnh báo và xác định xem phụ đề con nào là lớp con của UILabel. Sau đó thay đổi căn chỉnh văn bản của các nhãn sang căn trái bằng cách sử dụng label.textAlignment = NSTextAlignmentLeft.
  • Sau khi bạn thực hiện tất cả, sau đó bạn có thể gọi [alert show];.
+0

cảm ơn, làm thế nào về danh sách bản tin và căn trái? – DavidNg

+0

hello, bây giờ là Trung tâm Aligned. Tôi muốn căn trái với bản tin. Nếu bạn có văn bản dài hơn, bạn sẽ thấy chúng được căn giữa – DavidNg

+0

Có một dấu cộng từ tôi cho câu trả lời chi tiết của bạn – JSA986

1

Bạn có thể tạo một dòng mới bằng cách chèn \n vào thư của bạn. Ví dụ:

@"line 1.\nline 2,\nline 3" 
1

Đối với các dòng sản phẩm mới và liên kết văn bản thích @ câu trả lời qegal rằng ai là hoàn hảo nhưng nếu bạn muốn thay đổi màu sắc hoặc tùy chỉnh quan điểm cảnh báo tôi có một lớp tuyệt vời để sử dụng thay vì màn hình cảnh báo của hệ thống chỉ cần kiểm tra this, điều này chắc chắn sẽ hoạt động. thậm chí nó cũng sẽ giúp bạn để có được thông điệp đa lót với sự liên kết và danh sách dấu đầu dòng.

Nếu bạn thấy bất kỳ vấn đề nào khi sử dụng nó, hãy nhờ giúp đỡ, tôi chắc chắn sẽ giúp bạn.

Chúc mừng Mã hóa :)

4

để gắn kết trái:

NSArray *subviewArray = alert.subviews; 
for(int x = 0; x < [subviewArray count]; x++){ 

    if([[[subviewArray objectAtIndex:x] class] isSubclassOfClass:[UILabel class]]) { 
     UILabel *label = [subviewArray objectAtIndex:x]; 
     label.textAlignment = UITextAlignmentLeft; 
    } 

Để hiển thị một nền đỏ đằng sau cái nhìn cảnh báo:

alert.backgroundColor=[UIColor redColor]; 
+1

Lấy từ mã qegals và điều chỉnh. @ DavidNg Tôi có thể sugest bạn chấp nhận câu trả lời của mình và có lẽ cộng thêm một trong những người đã giúp bạn ở đây – JSA986

+0

Điều này sẽ không hoạt động ngay bây giờ. Bất kỳ giải pháp nào khác? – AntiMoron

2

Hãy chắc chắn rằng bạn sử dụng \ và không phải là bình thường/.

alt + shift + 7 (trên bàn phím của tôi)

\ n

Điều đó sẽ làm điều đó. :-)

Các vấn đề liên quan