代码搭建记事本框架(一)

纠结数天,终于下定决心开始搭建属于自己的记事本。

写在最前面:这两天是有些彷徨,加上重感冒,难受的要死。思路有些混乱,界面想了一下大概,就胡乱的开始了。但是总算是迈出了第一步。

将rootviewcontroller设置为tabbar

   application.statusBarHidden = YES;
    
    self.window = [[UIWindow alloc]init];
    self.window.frame = [[UIScreen mainScreen]bounds];
    
    self.window.rootViewController = [[CSMainBarController alloc]init];
    
    [self.window makeKeyAndVisible  ];

采用的tabbarcontroller 上面套上uinavcontroller  在加上tableviewcontroller 代码如下:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
//    CSMineTableViewController *mineTabelview = [[CSMineTableViewController alloc]init];
    CSMineTableViewController *mineTable =[[CSMineTableViewController alloc ]init];
    [self setTabbarController:mineTable Title:@"关于我" image:@"tabbar_profile_os7" selectImage:@"tabbar_profile_selected"];
    CSDiaryTableViewController *diaryTable = [[CSDiaryTableViewController alloc]init];
    [self setTabbarController:diaryTable Title:@"哈哈" image:@"tabbar_profile_os7" selectImage:@"tabbar_profile_selected"];
    
    CSSettingViewController *setView = [[CSSettingViewController alloc]init];
    [self setTabbarController:setView Title:@"饿了" image:@"tabbar_profile_os7" selectImage:@"tabbar_profile_selected"];
    
    CSDuanZiViewController *duanzi  = [[CSDuanZiViewController alloc]init];
    [self setTabbarController:duanzi Title:@"饿了" image:@"tabbar_profile_os7" selectImage:@"tabbar_profile_selected"];
}
/**
 *   设置对应的tabbar的属性
 *
 *  @param childVC     <#childVC description#>
 *  @param tile        <#tile description#>
 *  @param image       <#image description#>
 *  @param selectImage <#selectImage description#>
 */
-(void)setTabbarController:(UIViewController *)childVC Title:(NSString *)tile image:(NSString *)image selectImage: (NSString *)selectImage
{
//    childVC.title  =tile;
//    childVC.tabBarItem.image = [UIImage imageNamed:image];
//    childVC.tabBarItem.selectedImage = [UIImage imageNamed:selectImage];

    childVC.view.backgroundColor = CSRandomColor;
    childVC.tabBarItem.title = tile;
    childVC.tabBarItem.image = [UIImage imageNamed:image];
    childVC.tabBarItem.selectedImage = [UIImage imageNamed:selectImage];
    [self addChildViewController:childVC];
    
    CSNavigationViewController *myNav =[[CSNavigationViewController alloc]initWithRootViewController:childVC];
    [self addChildViewController:myNav];
}

通过重构nav中的push方法来判断对应的数据:判断通过push的viewcontroller是不是存在,count>0将隐藏对应的tabbar

/**
 *  拦截push进来的视图
 *
 */
-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    if (self.viewControllers.count>0) {   //如果push进来的不是栈底控制器的话
        viewController.hidesBottomBarWhenPushed = YES;
    }
    [super pushViewController:viewController animated:YES];
}

给对应的子视图设置对应的伪数据,并且做好相应的点击时间的跳转:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
#warning Incomplete method implementation.
    // Return the number of rows in the section.
    return 20;
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString * ID = @"cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID ];
    
    if (!cell) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
    }
    cell.textLabel.text = [NSString stringWithFormat:@"我是第 %ld",(long)indexPath.row];
    return cell;
}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UIViewController *myView = [[UIViewController alloc]init];
    myView.view.backgroundColor = [UIColor redColor];
    myView.title = @"diary跳转";
    [self.navigationController pushViewController:myView animated:YES];
}

对应顶部的UIBarButtonItem的点击,建立对应UIBarButtonItem的分类

//重构代码实现点击
    self.navigationItem.leftBarButtonItem = [UIBarButtonItem itemWithImage:@"navigationbar_friendsearch" highImage:@"navigationbar_friendsearch_highlighted" target:self action:@selector(pop)];


-(void)pop
{
    UIViewController *aboutView = [[UIViewController alloc]init];
    [aboutView.view setBackgroundColor:[UIColor redColor]];
    [self.navigationController pushViewController:aboutView animated:YES];
}

分类中对应的代码:

+(UIBarButtonItem *)itemWithImage:(NSString *)imageName highImage:(NSString *)highImage target:(id)target action:(SEL)action
{
    UIButton *button = [[UIButton alloc]init];
//    button  setImage:imageName forState:<#(UIControlState)#>
    [button   setBackgroundImage:[UIImage imageNamed:imageName ] forState:UIControlStateNormal];
    [button setBackgroundImage:[UIImage imageNamed:highImage] forState:UIControlStateHighlighted];
    
//    button.frame.size = button.currentBackgroundImage.size;
    CGRect frame = button.frame;
    frame.size = button.currentBackgroundImage.size;
    button.frame = frame;
    
    [button   addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
    return [[UIBarButtonItem alloc]initWithCustomView:button];

}
纸上得来终觉浅,绝知此事要躬行
原文地址:https://www.cnblogs.com/asheng/p/4396810.html