Khi ứng dụng của tôi tải lần đầu tiên, tôi đặt thuộc tính rootViewController
của UIWindow
thành controllerA
.Thay đổi rootViewController của UIWindow
Thỉnh thoảng trong ứng dụng của tôi, tôi chọn thay đổi rootViewController
thành controllerB
.
Vấn đề là đôi khi tôi thực hiện chuyển đổi lật trong controllerB
, tôi thấy chế độ xem của controllerA
đằng sau nó. Vì lý do nào đó, chế độ xem không bị xóa. Thậm chí còn đáng lo ngại hơn là sau khi đặt phương thức rootViewController
sang controllerB
, controllerA
's dealloc
không bao giờ bị sa thải.
tôi đã cố gắng loại bỏ các subviews của UIWindow
thủ công trước khi chuyển sang controllerB
, mà giải quyết vấn đề gặp controllerA
's quan điểm trong nền nhưng controllerA
' dealloc s vẫn không bao giờ được gọi. Có gì xảy ra ở đây ????
Táo tài liệu nói:
Gốc view controller cung cấp quan điểm nội dung của cửa sổ. Gán bộ điều khiển chế độ xem cho thuộc tính này (theo lập trình hoặc sử dụng Trình tạo giao diện) sẽ cài đặt chế độ xem của trình điều khiển chế độ xem làm chế độ xem nội dung của cửa sổ. Nếu cửa sổ có phân cấp chế độ xem hiện tại, các chế độ xem cũ sẽ bị xóa trước khi các chế độ xem mới được cài đặt.
CẬP NHẬT
Dưới đây là đoạn code của appdelegate tôi:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self showControllerA];
[self.window makeKeyAndVisible];
return YES;
}
- (void)showControllerA
{
ControllerA* a = [ControllerA new];
self.window.rootViewController = a;
}
- (void) showControllerB {
ControllerB* b = [ControllerB new];
self.window.rootViewController = b;
}
Bạn có thể cung cấp mã cho phương thức 'application: didFinishLaunchingWithOptions:' trong ứng dụng của bạn không? – Cezar
Câu hỏi ngu ngốc, nhưng bạn có đặt 'controllerA' thành nil khi bạn đẩy bộ điều khiển thứ hai không? Nếu không thì nó sẽ không dealloc. (Tôi giả sử bạn là) – Putz1103
Tôi không bao giờ giữ một con trỏ đến controllerA vì vậy không chắc chắn những gì tôi sẽ thiết lập để nil. – aloo