![](/img/trans.png)
[英]iOS 5 - Segue from one TableViewController to another TableViewController
[英]IOS: UITabBarControllerDelegate Methods from tableviewcontroller
我正在嘗試使用tabbarcontroller的委托方法之一從嵌入在tabbarcontroller中的視圖控制器中檢測另一個選項卡的輕擊。 但是,對於這些方法是否可以在單個視圖控制器中還是必須在uitabbarcontroller類中,我感到困惑。 我希望將它們放在可以訪問這些VC的所有屬性和局部變量的視圖控制器中,而不是在tabbarcontroller類中。
我也對如何設置代表感到困惑。
在tabbarcontroller中嵌入的tableview控制器中,我聲明了委托協議,然后包括以下代碼。 但是,該方法不觸發。 可以將此委托方法放入VC中嗎?如果可以,我應該如何以及在何處設置委托以使其啟動?
- (void)tabBarController:(UITabBarController *)tabBarController
didSelectViewController:(UIViewController *)viewController
{
NSLog(@"DIDSELECTVC FIRED");
NSLog(@"controller class: %@", NSStringFromClass([viewController class]));
NSLog(@"controller title: %@", viewController.title);
if (viewController == tabBarController.moreNavigationController)
{
tabBarController.moreNavigationController.delegate = self;
}
}
正如Toru Furuya所說,實現UITabBarControllerDelegate的更好方法是在UITabBarController本身的子類中。
如果要使用某些內部視圖控制器作為委托,請使用tabBarController
屬性:
- (void)viewDidLoad {
[super viewDidLoad];
self.tabBarController.delegate = self;
}
您可以使用單獨的ViewController或UITabBarController本身作為委托,只要它符合UITabBarControllerDelegate協議即可。
我認為,將UITabBarController本身(或另一個專用類)用於UITabBarControllerDelegate比使用子ViewController更常見,因為您只能設置一個委托。 但是,如果您要使用單個ViewController,希望此代碼對您有所幫助。
@implementation MyTabBarController : UITabBarController
- (id)initWithCoder:(NSCoder *)aCoder{
self = [super initWithCoder:aCoder];
if (self) {
MyTableViewController *controller = [[MyTableViewController alloc] init];
controller.tabBarItem = ...
_delegate = controller; //Set individual ViewController to UITabBarControllerDelegate
[self setViewControllers:@[controller] animated:YES];
}
return self;
}
@end
MyTableViewController是:
@interface MyTableViewController : UITableViewController<UITabBarControllerDelegate>
@end
@implementation MyTableViewController
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
//Handle tap event of UITabBarController
}
@end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.