Rav*_*avi 2 iphone objective-c uipopovercontroller ios xcode4
我正在使用Popover控制器,我在单击按钮时创建一个弹出控件,然后导航到类,在弹出类中显示一个表视图.
在这里,我想在点击表格视图行时忽略弹出窗口.
这是我的代码:
//popoverclass.h
UIPopoverController *popover;
@property(nonatomic,retain)IBOutlet UIPopoverController *popover;
//popoverclass.m
-(IBAction)ClickNext
{
ClassPopDismiss *classCourse = [[ClassPopDismiss alloc] init];
popover = [[UIPopoverController alloc] initWithContentViewController:classCourse];
popover.delegate = self;
[popover presentPopoverFromRect:CGRectMake(50,-40, 200, 300) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
[classCourse release];
}
//ClassPopDismiss.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
PopOverClass *objclass=[[PopOverClass alloc]init];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
[objclass.popover dismissPopoverAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)
上面的代码不起作用.
从同一个类中删除popover是不可能的,因为popover是从类中呈现的,popoverclass.m而你的表是在ClassPopDismiss.m.
因此,最好的选择是在您的自定义委托方法ClassPopDismiss.h:
// ClassPopDismiss.h
@protocol DismissDelegate <NSObject>
-(void)didTap;
@end
Run Code Online (Sandbox Code Playgroud)
并id <DismissDelegate> delegate;在您的@interface部分中设置一个.
打电话didTap告诉PopOverClass那个tableView被窃听.
// ClassPopDismiss.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
[delegate didTap];
}
Run Code Online (Sandbox Code Playgroud)
在你的popoverclass.h:
@interface PopOverClass : UIViewController <DismissDelegate>
Run Code Online (Sandbox Code Playgroud)
在你的popoverclass.m,不要忘记委托给self.喜欢:
ClassPopDismiss *classpop = [[ClassPopDismiss alloc]init];
classpop.delegate=self;
Run Code Online (Sandbox Code Playgroud)
在使用协议方法时:
-(void)didTap
{
//Dismiss your popover here;
[popover dismissPopoverAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4488 次 |
| 最近记录: |