我在UIViewController上有一个按钮点击该按钮,UIview就像alertview一样加速了,里面有tableview.Now选择表格单元格我想要转向详细的viewcontroller
这是我提到的the link,但没有一个为我工作
对于alertview我使用过(https://github.com/kwent/ios-custom-alertview)
感谢。
答案 0 :(得分:1)
@ yar1vn的答案是正确的,但是,我会更准确地描述你需要做什么。
链接中的自定义提醒视图具有delegate
属性,该属性应符合协议
@protocol CustomIOS7AlertViewDelegate
- (void)customIOS7dialogButtonTouchUpInside:(id)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;
@end
这意味着你应该在你的UIViewController中实现这个方法。
在.h文件中:
@interface YourViewController : UIViewController <YourViewController>
...
@end
在.m文件中:
@implementation YourViewController
...
- (void)customIOS7dialogButtonTouchUpInside:(id)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
[self performSegueWithIdentifier:@"YourSegue" sender:nil];
}
并在创建alertView时设置委托:
[alertView setDelegate:self];
@"YourSegue"
是来自控制器的segue,它向详细视图控制器显示alertView。
我不同意您应该使用UIAlertController,因为如果您的部署目标是iOS 7(这是合理的),您不应该使用iOS 8的新功能
修改强>
如果您想从表格视图单元格点击启动segue,则应从tableView的委托方法[self performSegueWithIdentifier:@"YourSegue" sender:nil]
-tableView:didSelectRowAtIndexPath:
我假设您已将当前视图控制器设置为tableView的dataSource和delegate,因此添加到视图控制器
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self performSegueWithIdentifier:@"YourSegue" sender:nil];
}
编辑2:
虽然将UIView设置为委托并不是最好的方法,但我们可以处理它:)
我看到两个解决方案:
第一种是将控制器作为属性添加到视图中,如下所示:
@interface YourView : UIView <UITableViewDelegate, UITableViewDataSource>
@property (nonatomic, weak) YourViewController *parentController;
...
某处(可能在-viewDidLoad
中)将此属性设置为
youViewInstance.parentController = self;
和视图的委托方法调用
[self.parentController performSegueWithIdentifier:@"YouSegue" sender:nil]
第二个是简单地将控制器设置为tableView的委托,并从其方法中调用performSegue:
。你应该更完整地描述所有细节:)
答案 1 :(得分:0)
您不应再使用第三方AlertViews。您可以使用随iOS 8 SDK提供的AlertController。
我不知道这个AlertView是如何工作的,但自述文件提到了一个委托。您是否尝试过委托方法调用segue?