单击操作表Objective-C Prime No,从文本字段输入的值时填充TableView

Posted

技术标签:

【中文标题】单击操作表Objective-C Prime No,从文本字段输入的值时填充TableView【英文标题】:Populating TableView upon clicking action sheet Objective-C Prime No, value entered from textfield 【发布时间】:2016-08-18 18:38:47 【问题描述】:

当我从 PRIME 类中导入可变数组“primearray”并将其分配给视图控制器中声明的 nsmutablearray“数组”时,它会引发错误。

基本上我正在尝试使用 nsmutablearry 的内容填充 tableview。

在类中声明的这个可变数组的内容取决于用户在操作表中按下 index:0 处的按钮。

谁能帮忙???提前致谢。

 IBOutlet UITextField *txt1;

    IBOutlet UITextField *txt2;

    NSMutableArray *arry;

    int startno;

    int endno;    


@property IBOutlet UITableView *tbl;

-(IBAction)ok:(id)sender;


@end

VIEWCONTROLLER.H 文件结束

 ViewController.m


    #import "ViewController.h"

    #import "PRIME.h"

    #import "NON-PRIME.h"

    #import "ODD.h"

    #import "EVEN.h"

   @interface ViewController ()

   @end

    @implementation ViewController

    - (void)viewDidLoad
    

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a  nib.


   arry=[[NSMutableArray alloc]init];





      - (BOOL)textFieldShouldReturn:(UITextField *)textField
      
          [textField resignFirstResponder]; 


          return YES;
      

        -(IBAction)ok:(id)sender
  
       // arry=[[NSMutableArray alloc]init];


          startno=[txt1.text intValue];

         endno=[txt2.text intValue];

       if(startno ==0 || endno ==0 || startno > endno)
       

    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"CHECK   INPUT "message:@"input must not be nil,zero or alphabet & endno must be  greater than startno" delegate:self cancelButtonTitle:@"CANCEL"  otherButtonTitles:nil, nil];

    [alert show];

      

 else

  


  //if (startno !=0 || endno !=0 || !(startno > endno))
    
      NSLog(@"1....start @%d, end @%d",startno,endno);

      UIActionSheet *action=[[UIActionSheet   alloc]initWithTitle:@"select your choice" delegate:self  cancelButtonTitle:@"cancel:" destructiveButtonTitle:nil otherButtonTitles:@"prime",@"non-prime",@"odd",@"even", nil];

       [action showInView:self.view];
    

    - (void)actionSheet:(UIActionSheet *)actionSheet   clickedButtonAtIndex: (NSInteger)buttonIndex
    

    if(buttonIndex==0)


    NSLog(@"2...start @%d, end @%d",startno,endno);

   PRIME *prime=[[PRIME alloc]init];

      [prime setnumbers1:startno sec:endno];

    [arry addObjectsFromArray:[prime primecal]];


    for(int i=0;i<arry.count;i++)
    
        NSLog(@"count : @%d",i);

    
     for(count1 in arry)
     

        NSLog(@" arry %@ ",count1);

    
 


if(buttonIndex==1)

    NON_PRIME *nonprimeobj=[[NON_PRIME alloc]init];

if(buttonIndex==2)

      ODD *oddobj=[[ODD alloc]init];


if(buttonIndex==3)


    EVEN *evenobj=[[EVEN alloc]init];


    - (NSInteger)tableView:(UITableView *)tableView         numberOfRowsInSection:(NSInteger)section
    
       return arry.count;
   


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

            UITableViewCell *cell;


        if(cell==nil)
           

            cell=[[UITableViewCell    alloc]initWithStyle:
            UITableViewCellStyleSubtitle reuseIdentifier:@"A"];

           
       cell.textLabel.text=[arry objectAtIndex:indexPath.row];

       return cell;



  

   - (void)didReceiveMemoryWarning
    
    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

     

   @end

视图控制器.m 文件结束

 @interface PRIME : NSObject
    

       int i,start,end;

       int remain,k,p;

       int count;

    //int count=0;   //error????

   

    @property(strong,nonatomic) NSMutableArray *primearray;

   -  (void)setnumbers1:(int)start1 sec:(int)end1;

    -(NSMutableArray *)primecal;

PRIME.H 类结束

     #import "PRIME.h"

      @implementation PRIME


     -(void)setnumbers1:(int)start1 sec:(int)end1
      

       start=start1;

      end=end1;

  



     -(NSMutableArray *)primecal
     
        NSMutableArray *primearray=[[NSMutableArray alloc]init];

          for(i=start;i<=end;i++)
         

           for(p=2;p<=1;p++)

        
            remain=i%p;

            p++;
        


        if(p==i)

        
             [primearray addObject:[NSString stringWithFormat:@"%d",i]];

            count++;
        
    

    return  primearray;
   

@end

PRIME.M 类结束

【问题讨论】:

@ReinierMelian 在 PRIME 类中 查看我的回答希望对你有帮助 @ReinierMelian 感谢您的帮助,现在它变得更清晰了,但是我如何处理从操作表 clickedbuttonatindex 方法调用表格视图 [索引 0 用于 Prime 无生成] @ReinierMelian 我已经声明了 Tableview cellforrowatindexpath 函数。但是我如何从 if(buttonindex==0) 调用这个函数。如果你能帮助我解决这个问题,我将不胜感激。 您只需拨打您的[self.tableView reloadData],检查我的答案是否已更新 【参考方案1】:

您遇到的主要问题是您想使用 PRIME 类中的方法,但您根本没有初始化或使用

我认为不是

arry=[[NSMutableArray alloc]init];

startno=[txt1.text intValue];

endno=[txt2.text intValue];

arry=[arry addObject: primearray]; // 

你需要这样的东西

NSMutableArray * arry = [NSMutableArray array];
startno=[txt1.text intValue];
endno=[txt2.text intValue];

PRIME * prime = [[PRIME alloc]init];
[prime setnumbers1:startno sec:endno];
[arry addObjectsFromArray:[prime primeCal]];

这是在使用你的 actionSheet

- (void)actionSheet:(UIActionSheet *)actionSheet   clickedButtonAtIndex: (NSInteger)buttonIndex


    if(buttonIndex==0)
    
        startno=[txt1.text intValue];
        endno=[txt2.text intValue];

        PRIME * prime = [[PRIME alloc]init];
        [prime setnumbers1:startno sec:endno];
        [arry addObjectsFromArray:[prime primeCal]];
        [self.tableView reloadData]
    

    if(buttonIndex==1)
    
        NON_PRIME *nonprimeobj=[[NON_PRIME alloc]init];
    
    if(buttonIndex==2)
    
          ODD *oddobj=[[ODD alloc]init];

    
    if(buttonIndex==3)
    

        EVEN *evenobj=[[EVEN alloc]init];

    

希望对你有帮助。

【讨论】:

@Reiner Meil​​ian 那么一旦用户点击 buttonatindex:0 -(void)actionSheet: (UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex if(buttonIndex==0) 我应该如何访问表格视图) 您需要在用户触摸您的actionSheet的buttonIndex 0后显示素数吗? @kumar 告诉我你是否最终实现了你想做的事情【参考方案2】:

唯一缺少的帽子是阻止在正常选项卡的单元格中输出素数;e视图如下添加代码:

- (void)actionSheet:(UIActionSheet *)actionSheet 
 clickedButtonAtIndex:  (NSInteger)buttonIndex


 [self.tbl reloadData];  //ADDED







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


  return arry.count;

  NSLog(@"arry.count @%d",arry.count);  /// //STILL not working????????? 
 

【讨论】:

以上是关于单击操作表Objective-C Prime No,从文本字段输入的值时填充TableView的主要内容,如果未能解决你的问题,请参考以下文章

UVA10780 Again Prime? No Time.

在 Objective-C 中使用三元运算符 + && 执行赋值和操作?

AppDelegate 和操作目标(Objective-c 2.0 和 Xcode)

在objective-c中YES/NO,TRUE/FALSE和true/false之间有区别吗?

Objective-C:以编程方式单击网站按钮

单击按钮时添加文本文件 Objective-C