1.//獲取view對(duì)應(yīng)的控制器
- (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; ?
}
//獲取當(dāng)前屏幕顯示的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;??
}??
獲取當(dāng)前屏幕中present出來的viewcontroller
-?(UIViewController?*)getPresentedViewController??
{??
UIViewController?*appRootVC?=?[UIApplication?sharedApplication].keyWindow.rootViewController;??
UIViewController?*topVC?=?appRootVC;??
if?(topVC.presentedViewController)?{??
topVC?=?topVC.presentedViewController;??
????}??
return?topVC;??
}?
2.點(diǎn)擊tableViewCell上按鈕獲取cell根據(jù)btn.superView.superView是不是UItableViewCell
3.tableViewCell分割線
1)巧妙利用TableView的背景作為分割線—萬能方式
這個(gè)方式的巧妙之處在于,保持每個(gè)cell的位置不變戈钢,也就是坐標(biāo)仍然位置系統(tǒng)自動(dòng)計(jì)算好的结榄,調(diào)整cell的高度,讓后邊的tableView露出來北救,利用tableView的背景色作為分割線。
關(guān)鍵點(diǎn):tableView的cell,在初始化的時(shí)候frame就已經(jīng)全部計(jì)算好了,當(dāng)cell即將顯示的時(shí)候會(huì)調(diào)用setFrame方法來給cell賦值瓤逼,所以,我們就可以重寫setFrame方法攔截库物,修改frame里面的height霸旗,達(dá)到目
/重寫cell 的 setFrame方法
-(void)setFrame:(CGRect)frame
{
? ? //只修改高度
? ? frame.size.height-=1;
? ? //調(diào)用系統(tǒng)方法設(shè)置
? ? [super setFrame:frame];
}
2)
//第一步:
//UITableView去掉自帶系統(tǒng)的分割線
_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));