2012-01-10 25 views
7

Khi mã với ứng dụng điều hướng iOS, tôi gặp phải sự cố này:viewWillAppear vs Viewdidload ios

nơi tôi có thể đặt phương thức "initdata" cho UITableView? trong viewWillAppear hoặc viewDidLoad?

hãy giúp tôi.

+0

Tùy thuộc vào ý bạn của dữ liệu init. – Sulthan

+0

Yêu cầu của bạn là gì. –

Trả lời

14

Bạn có thể đặt initData theo yêu cầu của bạn trong những ứng dụng,

nếu bảng của bạn cần phải tải dữ liệu mỗi khi có dữ liệu mới sau đó nó cần được theo

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    //initData 
} 

Ngược lại, nếu nhu cầu bảng để tải lại bằng một Dữ liệu duy nhất không thay đổi hoặc không có bất kỳ thao tác chỉnh sửa nào được thực hiện trên Dữ liệu, bạn nên sử dụng

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    //initData 
} 
+0

nếu tôi đặt mã ở cả hai nơi. Nó sẽ chạy mã 2 lần khi tôi đẩy tableView này vào một UInavigationcontroller – Clover03ti05

+0

Bạn nên đặt nó dưới "viewwillAppear" chỉ, như Array của bạn tùy thuộc vào giá trị thay đổi của View.It con sẽ làm việc. –

+0

Không bao giờ bắt đầu dữ liệu trong chế độ xemWillAppear. Tùy thuộc vào cách bạn tải bộ điều khiển xem vào màn hình (vào VC khác hoặc trong suốt phân đoạn) nó có thể không được viện dẫn chút nào. –

2

Tốt hơn nên gọi trongPhương thứchoặc initWithCoder: và giải phóng dữ liệu đã tải trong -(void)dealloc.

Ngoài ra, bạn có thể có điều đó trong viewDidLoad và giải phóng dữ liệu đã tải trong viewDidUnload. Nhưng nó là tốt hơn để tránh gọi mà từ viewWillAppear:

Edit:

Tôi hy vọng mảng mà là tùy thuộc vào sự lựa chọn trong giao diện cha mẹ. Trong trường hợp đó, hãy viết một phương thức setter, đặt điều kiện và khởi tạo dữ liệu trước khi đẩy bộ điều khiển xem.

DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; 
// Pass the selected object to the new view controller and depend on that, load the data. 
[detailViewController initData:(id)[_list objectAtIndex:indexPath.row]]; 
[self.navigationController pushViewController:detailViewController animated:YES]; 
[detailViewController release]; 
+0

trong trường hợp của tôi, tôi có một NSArray cần chuẩn bị cho uitableview. và giá trị của mảng này tùy thuộc vào giá trị thay đổi của Chế độ xem con. – Clover03ti05

+0

Tôi đã chỉnh sửa câu trả lời của mình – Ilanchezhian

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