- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个应用程序使用两个 UINavigationControllers - 一个用于菜单系统,一个用于实际游戏。在我的 appDelegate 中声明了一个通用的 UINavigationController。当应用程序加载时,它会加载菜单或游戏的 UINavigationController。当然,玩家随后可以在两者之间导航。
当从菜单转到游戏时,我创建了一个新的 UINavigationController 并将其呈现如下:
GameViewController *rootController = [[GameViewController alloc] init];
UINavigationController *newNavController = [[UINavigationController alloc] initWithRootViewController:rootController];
[rootController release];
newNavController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:newNavController animated:YES];
[newNavController release];
但是,我注意到当我这样做时,Menu 的 viewController 从不调用 dealloc。大概是因为仍然有一些东西让它活着。我发现,当我将 App Delegate 的 UINavigationController 明确设置为新的导航 Controller 时(在发布新的 navController 之前),它会发布菜单。我这样做如下:
MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.navController = newNavController;
[newNavController release];
这是好的做法吗?然而,我发现当从游戏导航回菜单时,同样的技巧似乎不起作用。 IE。
MainMenuViewController *menuViewController = [[MainMenuViewController alloc] init];
UINavigationController *newNavController = [[UINavigationController alloc] initWithRootViewController:menuViewController];
[menuViewController release];
newNavController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:newNavController animated:YES];
//Setting the appDelegate's navController to the new navController allows the menu to dealloc.
//This must happen AFTER the newNavController has been loaded.
MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.navController = newNavController;
[newNavController release];
切勿在游戏的主 ViewController 上调用 dealloc。当我再次导航回游戏时,菜单的主 ViewController 也不再释放。
我在使用 UINavigationControllers 时是不是遗漏了什么?
Cảm ơn,
迈克尔
编辑:我已经意识到我的游戏的主 ViewController 没有解除分配的原因是因为我有一些我没有失效的 NSTimers!但是,我仍然很想知道我的上述方法是否正确,并且在 App Delegate 中显式重新定义 navController 是允许不同的 UINavigationControllers 解除分配的正确方法:)
câu trả lời hay nhất
让您的生活更轻松。使用单个 UINavigationController,并维护两个单独的 View Controller 堆栈,它们只是 UIViewController 的数组。您可以使用 [UINavigationController setViewControllers:animated:]
来交换堆栈并将导航 Controller 留在原处。使用 UINavigationController.viewControllers
在替换之前获取当前堆栈。这比处理多个导航 Controller 的所有变幻莫测的事情要容易和清晰 143 亿倍。
关于iphone - 使用 App Delegate 处理多个 UINavigationController 并确保 UINavigationController 正确解除分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4233281/
Nếu tôi sử dụng NSUserDefaults để lưu trữ cài đặt ứng dụng của mình, có cách nào để "ẩn" cài đặt ứng dụng của tôi hiển thị trong ứng dụng Cài đặt thông thường trên iPhone không? Tôi biết có những công cụ khác như mySetti
Tôi đã làm theo hướng dẫn từ trang web này: http://theappleblog.com/2008/08/04/tutorial-build-a-simple-rss-reader-for-iphone/ để thực hiện
Tôi đã thực hiện bản địa hóa bằng cách thay đổi ngôn ngữ của iPhone bằng localisableString và xib khác chỉ cho phương thức NSLocale nhưng yêu cầu của ứng dụng là bản địa hóa bằng cách thay đổi ngôn ngữ trong cài đặt ứng dụng Xem
Tôi đang cố gắng tìm hiểu xem liệu iPhone có thể kết nối với một thiết bị khác không phải iPhone qua mạng không dây hoặc Bluetooth hay không nhưng tôi thấy có thông tin mâu thuẫn. Hầu hết những gì tôi tìm thấy đều có trước khi phát hành SDK 3.0, khi điều đó chắc chắn là không thể thực hiện được. xem đống
Câu hỏi này đã có câu trả lời ở đây: Đã đóng 7 năm trước. Có thể trùng lặp: Cách phát hiện iPhone
Khi tôi chạy ứng dụng của mình trên trình mô phỏng, nó luôn tạo ra một màn hình trống màu trắng. Nhưng khi tôi thoát ứng dụng bằng nút iPhone màu đen ở dưới cùng, Chế độ xem sẽ hiển thị sau khi vào lại ứng dụng. Ứng dụng sau đó chạy như bình thường. Nhưng khi tôi tải nó vào
Ý tôi là hai thiết bị iPhone phải được kết nối qua Bluetooth hoặc WiFi và giao diện người dùng của một thiết bị phải được mở rộng sang thiết bị iPhone kia (không chia sẻ màn hình). Có cách nào chúng ta có thể làm điều này trong iOS không? Câu trả lời hay nhất
Làm cách nào để phát hiện kiểu thiết bị thông qua macro? Tôi đã sử dụng một cái gì đó tương tự nhưng kết quả trên trình mô phỏng luôn là IS_IPHONE_5 #define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInt
Tôi hiện có một ứng dụng yêu cầu người dùng duy trì đường hầm VPN. Trong khi tải, tôi kiểm tra xem đường hầm VPN có sẵn không. Tôi đã tự hỏi liệu có cách nào để hiển thị UIAlertView mà sau khi nhấp vào "OK", người dùng sẽ được đưa đến màn hình cài đặt chính của iPhone để
Tôi đang phát triển một ứng dụng khách iPhone cho phép người dùng xếp hạng các dịch vụ khác nhau. Không cần đăng ký hoặc đăng nhập. Yêu cầu là người dùng không thể xếp hạng dịch vụ nhiều lần (mặc dù xếp hạng của họ có thể thay đổi). Hiện tại, ứng dụng có thể được gỡ bỏ, cài đặt lại,
Ví dụ: nếu tôi nhấp vào biểu tượng ứng dụng iphone, nó sẽ tạo tệp .app khi khởi chạy. Vậy có thể gọi ứng dụng iPhone khác từ ứng dụng này được không. Hoặc chúng ta có thể làm điều gì đó trong tệp .app đó như nó sẽ làm
Có thực sự có thể làm cho chế độ im lặng của iPhone độc lập với Ứng dụng iPhone không? Ứng dụng "Talking Carl" này làm tôi bối rối. IPhone của tôi ở chế độ im lặng. Bất cứ khi nào tôi mở ứng dụng này. Âm thanh ứng dụng đang ở chế độ bật
Câu hỏi này dường như không hữu ích cho bất kỳ khách truy cập nào trong tương lai; nó chỉ liên quan đến một khu vực địa lý nhỏ, một thời điểm cụ thể hoặc một tình huống rất hẹp và thường không áp dụng cho khán giả Internet trên toàn thế giới. Để được trợ giúp làm cho câu hỏi này có thể áp dụng rộng rãi hơn, hãy truy cập
Nếu tôi muốn viết một số ứng dụng iPhone tùy chỉnh nhưng không nhất thiết phải phân phối chúng thông qua App Store, liệu tôi có thể làm điều đó mà không cần tham gia Chương trình nhà phát triển iPhone không? Giả sử tôi chỉ muốn viết một số tiện ích nhỏ cho bản thân và đưa nó vào
Ý kiến và/hoặc trải nghiệm của mọi người với các công cụ trò chơi như Unity hoặc Torque Engine là gì? Nếu bạn là người mới bắt đầu phát triển trò chơi trên iPhone, liệu bạn có nên học một trong những công cụ này không? Các ứng dụng do các công cụ này tạo ra khác với các ứng dụng gốc sử dụng SDK.
Bạn có thể phân phối ứng dụng iPhone để thử nghiệm trong Trình mô phỏng iPhone trên máy tính chưa cài đặt công cụ phát triển XCode không? Tôi có thể cài đặt trình giả lập trực tiếp trên máy tính để thử nghiệm không? Tôi có một nhóm người thử nghiệm không phải là nhà phát triển ngoại trừ khả năng chạy
Tôi muốn xây dựng và cài đặt ứng dụng của mình trên thiết bị đã bẻ khóa của mình mà không phải trả 99 USD cần thiết cho Chương trình dành cho nhà phát triển iPhone. Tôi có Rock và Cydia... Cách dễ nhất (nếu có thể) là gì? Cảm ơn. Câu trả lời hay nhất là cái này
Tôi muốn kiểm tra một trang web để xem nó hoạt động như thế nào với iPhone nhưng tôi không có iPhone hoặc iPod touch. Có cách nào để tôi kiểm tra trang web của mình hoạt động như thế nào mà không cần sở hữu nó không? Điều tôi thực sự muốn là sửa chữa Stack
Nói một cách đơn giản; 99 đô la của tôi mang lại cho tôi điều gì mà tôi không thể nhận được miễn phí? Được rồi, được rồi, nghe có vẻ là một câu hỏi ngu ngốc, nhưng trang web của Apple đối với tôi không rõ ràng. Linh cảm của tôi là bạn có thể gửi ứng dụng lên cửa hàng ứng dụng với giá 99, nhưng bạn có thể làm điều đó miễn phí
Tôi là nhà phát triển iOS đã đăng ký. Làm cách nào để chuyển ứng dụng iPhone sang iPhone cá nhân của tôi? Câu trả lời tốt nhất để thử nghiệm? Chỉ cần chọn thiết bị của bạn thay vì trình giả lập. Giới thiệu về iPhone - Làm cách nào để chuyển đổi iPhone của tôi sang
Tôi là một lập trình viên xuất sắc, rất giỏi!