从自定义UIView查看,它是一个警报视图到UIViewController

时间:2014-10-17 07:07:08

标签: ios objective-c uitableview uiview segue

我在UIViewController上有一个按钮点击该按钮,UIview就像alertview一样加速了,里面有tableview.Now选择表格单元格我想要转向详细的viewcontroller

这是我提到的the link,但没有一个为我工作

对于alertview我使用过(https://github.com/kwent/ios-custom-alertview

感谢。

2 个答案:

答案 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?