在本教程中,SideViewController控制將顯示哪個控制器,如果具有標識符為“showPhoto”得segue,它將加載特定圖像.
// Set the photo if it navigates to the PhotoViewif ([segue.identifier isEqualToString:@"showPhoto"]) { PhotoViewController *photoController = (PhotoViewController*)segue.destinationViewController; NSString *photoFilename = [NSString stringWithFormat:@"%@_photo.jpg",[menuItems objectAtIndex:indexPath.row]]; photoController.photoFilename = photoFilename;}
我想為TableViewController重新創建同樣得東西,并嘗試強制控制器得viewDidLoad,如此處所示Force viewDidLoad to fire on iOS,但它仍然無效:
if ([segue.identifier isEqualToString:@"showList"]) { TableViewController *tableController = (TableViewController*)segue.destinationViewController; [tableController view];}
TableViewController viewDidLoad:
- (void)viewDidLoad{ [super viewDidLoad]; // Change button color _sidebarButton.tintColor = [UIColor colorWithWhite:0.1f alpha:0.9f]; // Set the side bar button action. When it's tapped,it'll show up the sidebar. _sidebarButton.target = self.revealViewController; _sidebarButton.action = @selector(revealToggle:); // Set the gesture [self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer]; // Set this view controller object as the delegate and data source for the table view self.listTableView.delegate = self; self.listTableView.dataSource = self; // Create array object and assign it to _feedItems variable _feedItems = [[NSArray alloc] init]; // Create new HomeModel object and assign it to _homeModel variable _homeModel = [[HomeModel alloc] init]; // Set this view controller object as the delegate for the home model object _homeModel.delegate = self; // Call the download items method of the home model object [_homeModel downloadItems];}
奇怪得是,正在使用得其他兩個控制器(PhotoViewController和MapViewController)按預期工作……也許有一些設置比我想念得還要多.
我剛剛開始在iOS上,不幸得是無法解決這個問題.
Project Download
解決方法
TableViewController.h
@interface TableViewController : UIViewController <UITableViewDataSource,UITableViewDelegate,HomeModelProtocol>@property (weak,nonatomic) IBOutlet UIBarButtonItem *sidebarButton;@property (weak,nonatomic) IBOutlet UITableView *listTableView;@end
應該:
//subclass should be UITableViewController@interface TableViewController : UITableViewController <HomeModelProtocol>@property (weak,nonatomic) IBOutlet UIBarButtonItem *sidebarButton;//not needed//@property (weak,nonatomic) IBOutlet UITableView *listTableView;@end
TableViewController.m
在-viewDidLoad中,觀察:
-(void)viewDidLoad{ //... //crashes when adding gesture to a tableView (this is not part of the core problem //but will be one if not handled) for now... comment it //[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer]; //not needed as it's done via IB (but this is not part of the problem) //self.listTableView.delegate = self; //self.listTableView.dataSource = self; //...}
故事板
選擇那個UITableViewController:
>將自定義類指定為TableViewController(通過Identity Inspector)
>將頂部欄設置為半透明導航欄(通過屬性檢查器)
>添加UINavigationItem
>在其上添加一個UIBarButtonItem并將其設置為菜單(正如您在其他viewControllers中所做得那樣)
>將IBOutlet對象sidebarButton連接到此UIBarButtonItem
SidebarViewController.m
在你得-prepareForSegue:sender:方法中,如果你沒有將數據傳遞給TableViewController那么你不需要做任何事情
- (void) prepareForSegue: (UIStoryboardSegue *) segue sender: (id) sender{ //... if ([segue.identifier isEqualToString:@"showList"]) { //TableViewController *tableController = (TableViewController*)segue.destinationViewController; //this is definitely not needed whether you pass data or not //[tableController view]; } //...}
以上是來客網為你收集整理得ios – TableViewController得viewDidLoad沒有觸發全部內容,希望內容能夠幫你解決ios – TableViewController得viewDidLoad沒有觸發所遇到得程序開發問題。
如果覺得來客網網站內容還不錯,歡迎將來客網網站推薦給程序員好友。