1.//获取view对应的控制器
- (UIViewController*)viewController {
for (UIView* nextVC = [self.view superview]; nextVC; nextVC = nextVC.superview) {
UIResponder* nextResponder = [nextVC nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]]) {
return (UIViewController*)nextResponder;
}
}
return nil;
}
//获取当前屏幕显示的viewcontroller
- (UIViewController *)getCurrentVC
{
UIViewController *result = nil;
UIWindow * window = [[UIApplication sharedApplication] keyWindow];
if (window.windowLevel != UIWindowLevelNormal)
{
NSArray *windows = [[UIApplication sharedApplication] windows];
for(UIWindow * tmpWin in windows)
{
if (tmpWin.windowLevel == UIWindowLevelNormal)
{
window = tmpWin;
break;
}
}
}
UIView *frontView = [[window subviews] objectAtIndex:0];
id nextResponder = [frontView nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]])
result = nextResponder;
else
result = window.rootViewController;
return result;
}
获取当前屏幕中present出来的viewcontroller
- (UIViewController *)getPresentedViewController
{
UIViewController *appRootVC = [UIApplication sharedApplication].keyWindow.rootViewController;
UIViewController *topVC = appRootVC;
if (topVC.presentedViewController) {
topVC = topVC.presentedViewController;
}
return topVC;
}
2.点击tableViewCell上按钮获取cell根据btn.superView.superView是不是UItableViewCell
3.tableViewCell分割线
1)巧妙利用TableView的背景作为分割线—万能方式
这个方式的巧妙之处在于,保持每个cell的位置不变,也就是坐标仍然位置系统自动计算好的,调整cell的高度,让后边的tableView露出来,利用tableView的背景色作为分割线。
关键点:tableView的cell,在初始化的时候frame就已经全部计算好了,当cell即将显示的时候会调用setFrame方法来给cell赋值,所以,我们就可以重写setFrame方法拦截,修改frame里面的height,达到目
/重写cell 的 setFrame方法
-(void)setFrame:(CGRect)frame
{
//只修改高度
frame.size.height-=1;
//调用系统方法设置
[super setFrame:frame];
}
2)
//第一步:
//UITableView去掉自带系统的分割线
_tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
//第二步:
//在自定义的UITableViewCell里重写drawRect:方法
#pragma mark - 绘制Cell分割线
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
// CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
//CGContextFillRect(context, rect);
//上分割线,
CGContextSetStrokeColorWithColor(context, [UIColor colorWithRed:198/255.0green:198/255.0blue:198/255.0alpha:1].CGColor);
CGContextStrokeRect(context, CGRectMake(0, 0, rect.size.width, 1));
//下分割线
CGContextSetStrokeColorWithColor(context, [UIColor colorWithRed:198/255.0green:198/255.0blue:198/255.0alpha:1].CGColor);
CGContextStrokeRect(context, CGRectMake(0, rect.size.height, rect.size.width, 1));
网友评论