方法确实在父视图控制器中调用,但方法内的逻辑从不采取任何措施

redoc01

我有一个父视图控制器,其中包含以编程方式创建的两个视图,而另一个视图控制器是在其中一个视图中单击链接时动态创建的。

在这个动态创建的视图控制器中,我有一个后退按钮,该按钮也有一个处理程序,当单击后退按钮时,自定义视图控制器将退出视图,然后在父视图控制器中调用一个方法,但是该方法中的逻辑称为不起作用。

单击链接时添加的自定义View Controller:

#import <UIKit/UIKit.h>
#import "ViewController.h"

@interface UIListingViewController : UIViewController     <UIGestureRecognizerDelegate,UITableViewDataSource,UITableViewDelegate,UIGestureRecognizerDelegat    e>
@property (nonatomic, strong) UITableView *uiTableView1;
@property (nonatomic, strong) UIButton *uiButton;

@property (nonatomic, strong) ViewController *uiVC;
@property (nonatomic, strong) UINavigationBar *uiNavigationBar;
@property (nonatomic, strong) UIView *uiView;

@end

#import "UIListingViewController.h"
#import "Listing.h"

@interface UIListingViewController ()

@end

@implementation UIListingViewController

@synthesize uiButton;
@synthesize uiTableView1;
@synthesize uiVC;
@synthesize uiNavigationBar;
@synthesize uiView;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization
    uiView = [[UIView alloc] init];
    [uiView setFrame:CGRectMake(0, 0, 320, 480)];
    [uiView setBackgroundColor:[UIColor grayColor]];
    [self.view addSubview:uiView];
    //self.view = uiView;


    uiNavigationBar = [[UINavigationBar alloc] init];
    [uiNavigationBar setFrame:CGRectMake(0, 0, 320, 50)];
    [uiView addSubview:uiNavigationBar];
    //uiButton.layer.zPosition = 15;


    uiButton = [[UIButton alloc] init];
    [uiButton setTitle:@"Back" forState:UIControlStateNormal];
    [uiButton setFrame:CGRectMake(0, 20, 80, 25)];
    [uiButton addTarget:self action:@selector(myButtonClick) forControlEvents:UIControlEventTouchUpInside];
    //uiButton.layer.zPosition = 15;
    [uiNavigationBar addSubview:uiButton];

    uiTableView1 = [[UITableView alloc] init];
    [uiTableView1 setFrame:CGRectMake(0, 50, 320, 480)];
    uiTableView1.dataSource = self;
    uiTableView1.delegate = self;
    uiTableView1.scrollEnabled = YES;        //uiTableView1.layer.zPosition = 15;

    [uiView addSubview:uiTableView1];
}
return self;
}

- (void)viewDidLoad
{


[super viewDidLoad];
// Do any additional setup after loading the view.
}

- (void)myButtonClick {
// button was tapped - do something


[UIView animateWithDuration:0.7f
                 animations:^
 {

     CGRect frame = self.view.frame;
     frame.origin.x = 0;
     frame.origin.y = 480;
     self.view.frame = frame;





 }
                 completion:^(BOOL finished)
 {

     [self.uiVC backToViewStart];

 }
 ];

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

static NSString *CellIdentifier = @"newFriendCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"newFriendCell"];

if (cell == nil) {
    cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}

Listing *listing = (Listing *) [self.uiVC.data objectAtIndex:indexPath.row];
cell.textLabel.text = listing.name;

return cell;

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

return [self.uiVC.data count];

}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

当在父视图控制器的视图之一中点击链接时,这是创建自定义视图控制器的轻击手势:

- (void)handleSingleTap:(UITapGestureRecognizer *)recognizer {
CGPoint location = [recognizer locationInView:[recognizer.view superview]];

CGPoint touchPoint=[recognizer locationInView:[recognizer.view superview]];



UIViewMenuItem *tempView = (UIViewMenuItem *)recognizer.view;
NSNumber *tag = [NSNumber numberWithInt:tempView.tag];
NSString *idCat = [tempView getCatId];

NSLog(@"TAG %@",idCat);

//NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString: [NSString stringWithFormat:@"http://localhost:8888/MAMP/WHFC/SubCategories.php?categoryid//=%d", idCat]]];

NSString *myRequestString = [NSString stringWithFormat:@"categoryid=%@",idCat];

// Create Data from request
NSData *myRequestData = [NSData dataWithBytes: [myRequestString UTF8String] length: [myRequestString length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString: @"http://localhost:8888/MAMP/WHFC/SubCategories.php"]];
// set Request Type
[request setHTTPMethod: @"POST"];
// Set content-type
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
// Set Request Body
[request setHTTPBody: myRequestData];
// Now send a request and get Response
NSData *data = [NSURLConnection sendSynchronousRequest: request returningResponse: nil error: nil];
// Log Response
NSString *response = [[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding:NSUTF8StringEncoding];

NSError *err;

NSArray *arrCategoryList = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&err];

const unsigned char *ptr = [data bytes];

for(int i=0; i<[data length]; ++i) {
    unsigned char c = *ptr++;
    NSLog(@"char=%c hex=%x", c, c);
}

self.data = [[NSMutableArray alloc] init];

for(NSDictionary *dictCategory in arrCategoryList)
{
    NSString *strCategoryId = [dictCategory objectForKey:@"CategoryId"];
    NSString *strCategoryName = [dictCategory objectForKey:@"Name"];
    NSLog(@"%@ : %@",strCategoryId,strCategoryName);

    Listing *listing = [[Listing alloc] init];
    listing.catId = strCategoryId;
    listing.name = strCategoryName;

    [self.data addObject:listing];


}

//UIViewController *viewController = [[UIViewController alloc] init];
//viewController.view.backgroundColor = [UIColor whiteColor];
UIListingViewController *viewController = [[UIListingViewController alloc] init];
viewController.view.backgroundColor = [UIColor whiteColor];
viewController.uiVC = self;

[self presentViewController:viewController animated:YES completion:nil];

[UIView animateWithDuration:0.7f
                 animations:^
 {

     CGRect frame = viewSlide3.frame;
     frame.origin.x = 0;
     frame.origin.y = -480;
     viewSlide3.frame = frame;





 }
                 completion:^(BOOL finished)
 {


 }
 ];
//Do stuff here...
}

这是我想从自定义视图控制器在父视图控制器中调用的方法:

- (void) backToViewStart{


     CGRect frame = viewSlide3.frame;
     frame.origin.x = 10;
     frame.origin.y = 0;
     viewSlide3.frame = frame;


     CGRect frame2 = viewSlide.frame;
     frame2.origin.x = 0;
     frame2.origin.y = 0;
     viewSlide.frame = frame2;
}

但是这种逻辑永远都行不通,我只能得到一个空白屏幕。为什么?

HMHero

我可以看到您实际上将自己的ListingViewController的视图动画了到底部,但实际上您从未解雇过UIListingViewController。

试穿ListViewController

- (void)myButtonClick 
{
     [self.uiVC backToViewStart];
}

在ParentViewController上

- (void) backToViewStart
{
     [self dismissViewControllerAnimated:YES completion:nil];
}

让我知道它是否有效。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从Angular指令内的ng-click中调用父控制器中的方法

来自分类Dev

从子控制器调用父控制器的方法

来自分类Dev

从子控制器调用父控制器的方法

来自分类Dev

父控制器上的调用方法?

来自分类Dev

父控制器上的调用方法?

来自分类Dev

测试是否在视图控制器方法中调用performSegueWithIdentifier

来自分类Dev

从 TabBarClass 调用视图控制器方法

来自分类Dev

控制器内的调用方法

来自分类Dev

从不同的控制器调用时如何跳过Rails模型中的方法

来自分类Dev

从不同的控制器调用时如何在Rails模型中跳过方法

来自分类Dev

在视图控制器中全局创建一个方法,并将其调用给多个视图控制器

来自分类Dev

使用委托从模态视图控制器调用另一个视图控制器中的方法

来自分类Dev

使用AngularJs ControllerAs方法,如何从子控制器中调用父控制器中的函数?

来自分类Dev

从Rails中的控制器调用方法?

来自分类Dev

无法通过指令调用父控制器方法

来自分类Dev

angular js:从指令调用父控制器方法

来自分类Dev

如何从模型控制器调用父方法

来自分类Dev

从AngularJS的父控制器调用指令的方法

来自分类Dev

使用父控制器方法调用测试Angular

来自分类Dev

在整个控制器中调用任何动作时,是否可以调用方法?

来自分类Dev

协议扩展中的方法被调用而不是视图控制器中的方法实现

来自分类Dev

AngularJS:子视图的控制器从不调用

来自分类Dev

在MVC视图中,如果未在form标记中指定任何控制器和方法,则调用什么控制器和方法?

来自分类Dev

如何在控制器中调用静态视图帮助器方法?

来自分类Dev

从多个视图控制器接收委托方法调用

来自分类Dev

从自定义类调用视图控制器方法

来自分类Dev

需要调用从视图返回String值的控制器方法

来自分类Dev

从视图控制器调用应用程序委托方法

来自分类Dev

如何从视图RAILS 4.0调用控制器方法

Related 相关文章

  1. 1

    从Angular指令内的ng-click中调用父控制器中的方法

  2. 2

    从子控制器调用父控制器的方法

  3. 3

    从子控制器调用父控制器的方法

  4. 4

    父控制器上的调用方法?

  5. 5

    父控制器上的调用方法?

  6. 6

    测试是否在视图控制器方法中调用performSegueWithIdentifier

  7. 7

    从 TabBarClass 调用视图控制器方法

  8. 8

    控制器内的调用方法

  9. 9

    从不同的控制器调用时如何跳过Rails模型中的方法

  10. 10

    从不同的控制器调用时如何在Rails模型中跳过方法

  11. 11

    在视图控制器中全局创建一个方法,并将其调用给多个视图控制器

  12. 12

    使用委托从模态视图控制器调用另一个视图控制器中的方法

  13. 13

    使用AngularJs ControllerAs方法,如何从子控制器中调用父控制器中的函数?

  14. 14

    从Rails中的控制器调用方法?

  15. 15

    无法通过指令调用父控制器方法

  16. 16

    angular js:从指令调用父控制器方法

  17. 17

    如何从模型控制器调用父方法

  18. 18

    从AngularJS的父控制器调用指令的方法

  19. 19

    使用父控制器方法调用测试Angular

  20. 20

    在整个控制器中调用任何动作时,是否可以调用方法?

  21. 21

    协议扩展中的方法被调用而不是视图控制器中的方法实现

  22. 22

    AngularJS:子视图的控制器从不调用

  23. 23

    在MVC视图中,如果未在form标记中指定任何控制器和方法,则调用什么控制器和方法?

  24. 24

    如何在控制器中调用静态视图帮助器方法?

  25. 25

    从多个视图控制器接收委托方法调用

  26. 26

    从自定义类调用视图控制器方法

  27. 27

    需要调用从视图返回String值的控制器方法

  28. 28

    从视图控制器调用应用程序委托方法

  29. 29

    如何从视图RAILS 4.0调用控制器方法

热门标签

归档